"์๋ , ์๋ฏธ๊ณ !"
"์ด์ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ์ธ ์ธ์ฝ๋ฉ์ ํ ์๊ฐ์ ๋๋ค."
"์ด๋์ ๊ฐ ์ด๋ฏธ ๊ฐ ๋ฌธ์์ ์ฝ๋(์ซ์)๊ฐ ์๋ค๋ ๋ง์ ๋ค์์ ๊ฒ์ ๋๋ค. ๊ทธ๋์ char ์ ํ์ด ๊ธฐํธ์ ์ซ์๋ฅผ ๋ชจ๋ ๋ํ๋ผ ์ ์์ต๋๋ค."
"์๋ฅผ ๋ค์ด ์์ด ์ํ๋ฒณ 'A'์ ์ฝ๋๋ 65, 'B'๋ 66, 'C'๋ 67 ๋ฑ์ ๋๋ค. ๋๋ฌธ์, ์๋ฌธ์, ํค๋ฆด ๋ฌธ์, ์ค๊ตญ์ด์ ๋ํ ๊ณ ์ ์ฝ๋๊ฐ ์์ต๋๋ค. ๋ฌธ์(์, ๋งค์ฐ ๋ง์ ์ฝ๋), ์ซ์ ๋ฐ ๋ค์ํ ๊ธฐํธ. ์์ปจ๋ ๋ฌธ์๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ๋ํ ์ฝ๋๊ฐ ์์ต๋๋ค."
"๊ทธ๋์, ๋ชจ๋ ๋ฌธ์์ ๋ฌธ์๋ ์ด๋ค ์ซ์์ ํด๋นํฉ๋๊น?"
"์ ํํ."
"๋ฌธ์๋ ์ซ์๋ก ๋ณํ๋ ์ ์๊ณ ์ซ์๋ ๋ฌธ์๋ก ๋ณํ๋ ์ ์์ต๋๋ค. Java๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ์ฌ์ด์ ์ฐจ์ด์ ์ ๋ณด์ง ๋ชปํฉ๋๋ค."
char c = 'A'; //The code (number) for 'A' is 65
c++; //Now c contains the number 66, which is the code for 'B'
"ํฅ๋ฏธ๋ก์ด."
"๊ทธ๋์ ์ธ์ฝ๋ฉ์ ์ผ๋ จ์ ๊ธฐํธ์ ๊ทธ์ ์์ํ๋ ์ฝ๋ ์งํฉ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋จ์ง ํ๋์ ์ธ์ฝ๋ฉ์ด ๋ฐ๋ช ๋ ๊ฒ์ด ์๋๋ผ ๊ฝค ๋ง์ด ์์ต๋๋ค. ๋์ค์์ผ ๊ณตํต ๋ฒ์ฉ ์ธ์ฝ๋ฉ์ธ ์ ๋์ฝ๋๊ฐ ๋ฐ๋ช ๋์์ต๋๋ค."
"๊ทธ๋ฌ๋ ์๋ฌด๋ฆฌ ๋ง์ ๋ณดํธ์ ํ์ค์ด ๋ฐ๋ช ๋๋๋ผ๋ ์๋ฌด๋ ์๋๋ฌ ์ด์ ํ์ค์ ํฌ๊ธฐํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ด ๋งํ์์์ ๊ฐ์ด ๋ฐ์ํฉ๋๋ค."
"Vincent์ Nick์ด ๊ทธ๋ค๋ง์ ์ธ์ฝ๋ฉ์ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๊ณ ์์ํด๋ณด์ธ์."
"๋น์ผํธ์ ์ธ์ฝ๋ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค."
"๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ Nick์ ์ธ์ฝ๋ฉ์ด ์์ต๋๋ค."
"์ฌ์ง์ด ๊ฐ์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ฌธ์์ ๋ํ ์ฝ๋๊ฐ ๋ค๋ฆ ๋๋ค."
"๋ฌธ์์ด 'ABC-123'์ด Vincent์ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ์ฌ ํ์ผ์ ๊ธฐ๋ก๋๋ฉด ๋ค์ ๋ฐ์ดํธ ์ธํธ๋ฅผ ์ป์ต๋๋ค."
"๊ทธ๋ฆฌ๊ณ ์ด์ Nick์ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ํ์ผ์ ์ฝ์ผ๋ ค๊ณ ํฉ๋๋ค."
"๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค. ยซ345-IJKยป."
"๊ทธ๋ฆฌ๊ณ ์ต์ ์ ์ํฉ์ ์ผ๋ฐ์ ์ผ๋ก ์ธ์ฝ๋ฉ์ด ํ์ผ์ ์ด๋์๋ ์ ์ฅ๋์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ถ์ธกํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค."
"๊ธ์, ๊ทธ๋ค์ ์ด๋ป๊ฒ ์ถ์ธกํฉ๋๊น?"
"๊ทธ๊ฑด ๋ค๋ฅธ ์ฃผ์ ์ ๋๋ค. ํ์ง๋ง ์ธ์ฝ๋ฉ ์์ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ณ ์ถ์ต๋๋ค. ์ด๋ฏธ ์๊ณ ์๋ฏ์ด Java์ ๋ฌธ์ ํฌ๊ธฐ๋ 2๋ฐ์ดํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ Java ๋ฌธ์์ด์ ์ ๋์ฝ๋ ํ์์ ์ฌ์ฉํฉ๋๋ค."
"๊ทธ๋ฌ๋ Java๋ ๋ฌธ์์ด์ ์๊ณ ์๋ ๋ชจ๋ ์ธ์ฝ๋ฉ์ ๋ฐ์ดํธ ์งํฉ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค. String ํด๋์ค์๋ ์ด๋ฅผ ์ํ ํน์ ๋ฉ์๋๊ฐ ์์ต๋๋ค. Java์๋ ํน์ ์ธ์ฝ๋ฉ์ ์ค๋ช ํ๋ ํน์ Charset ํด๋์ค๋ ์์ต๋๋ค."
1) Java๊ฐ ์ง์ํ๋ ๋ชจ๋ ์ธ์ฝ๋ฉ ๋ชฉ๋ก์ ์ด๋ป๊ฒ ์ป์ต๋๊น?
"์ด๋ฅผ ์ํด availableCharsets๋ผ๋ ํน๋ณํ ์ ์ ๋ฉ์๋๊ฐ ์์ต๋๋ค. "์ด ๋ฉ์๋๋ ์ ์ธํธ(์ธ์ฝ๋ฉ ์ด๋ฆ, ์ธ์ฝ๋ฉ์ ์ค๋ช ํ๋ ๊ฐ์ฒด)๋ฅผ ๋ฐํํฉ๋๋ค."
SortedMap<String,Charset> charsets = Charset.availableCharsets();
"๊ฐ ์ธ์ฝ๋ฉ์๋ ๊ณ ์ ํ ์ด๋ฆ์ด ์์ต๋๋ค. UTF-8, UTF-16, Windows-1251, KOI8-R,โฆ
2) ํ์ฌ ํ์ฑ ์ธ์ฝ๋ฉ(์ ๋์ฝ๋)์ ์ด๋ป๊ฒ ์ป์ต๋๊น?
" ์ด๋ฅผ ์ํ defaultCharset ์ด๋ผ๋ ํน๋ณํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค .
Charset currentCharset = Charset.defaultCharset();
3) ๋ฌธ์์ด์ ํน์ ์ธ์ฝ๋ฉ์ผ๋ก ์ด๋ป๊ฒ ๋ณํํฉ๋๊น?
"Java์์๋ Java๊ฐ ์๊ณ ์๋ ๋ชจ๋ ์ธ์ฝ๋ฉ์์ ๋ฌธ์์ด์ ๋ฐ์ดํธ ๋ฐฐ์ด๋ก ๋ณํํ ์ ์์ต๋๋ค."
๋ฐฉ๋ฒ | ์ |
---|---|
|
|
|
|
|
|
4) ํ์ผ์ ์ธ์ฝ๋ฉ์ด ๋ฌด์์ธ์ง ์๊ณ ์๋ ๊ฒฝ์ฐ ํ์ผ์์ ์ฝ์ ๋ฐ์ดํธ ๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
"ํจ์ฌ ๋ ์ฝ์ต๋๋ค. String ํด๋์ค์๋ ํน๋ณํ ์์ฑ์๊ฐ ์์ต๋๋ค."
๋ฐฉ๋ฒ | ์ |
---|---|
|
|
|
|
|
|
5) ํ ์ธ์ฝ๋ฉ์์ ๋ค๋ฅธ ์ธ์ฝ๋ฉ์ผ๋ก ๋ฐ์ดํธ ๋ฐฐ์ด์ ์ด๋ป๊ฒ ๋ณํํฉ๋๊น?
"๋ง์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ค์์ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค."
Charset koi8 = Charset.forName("KOI8-R");
Charset windows1251 = Charset.forName("Windows-1251");
byte[] buffer = new byte[1000];
inputStream.read(buffer);
String s = new String(buffer, koi8);
buffer = s.getBytes(windows1251);
outputStream.write(buffer);
"๊ทธ๊ฒ ๋ด๊ฐ ์๊ฐํ๊ฑฐ์ผ. ์ฌ๋ฏธ์๋ ์์ ๊ณ ๋ง์, ๋ฆฌ์."
GO TO FULL VERSION