2008년 05월 12일
[펌] UTF8 등, 한글 깨짐 관련.
From : http://kldp.org/node/79068
[완료] 자바에서 UTF-8, EUC-KR과 유니코드
안녕하세요.
자바에서 UTF-8 => 일반 유니코드 변환
EUC-KR => 일반 유니코드 변환
이런것들은 어떻게 해야 하나요...
일반 유니코드라는것을 자바에서 어떻게 받아들이고 있는지 모르겠네요...
...
유니코드 자체는 바이트의 개념이 아닙니다. 단순히 한 문자에 숫자 하나를 연결하는 개념이죠. 이것을 실제 바이트 단위로 저장하는 방식을 UTF-8, UTF-16 등으로 부르는 것입니다.
이중 UTF-8은 문자 하나당 저장되는 최소 단위가 8비트, 즉 1바이트입니다. UTF-16은 최소 단위가 2바이트이고요.그리고 과거에 UCS-2라는 것이 있었는데, 모든 문자를 2바이트 고정으로 저장합니다. 따라서 2바이트를 넘어가는 문자들은지원하지 못하는 방식으로 지금은 거의 사용되지 않는 방식이라고 생각하는 것이 좋습니다. (이것이 '유니코드는 2바이트다'는잘못된 소문의 원인이기도 합니다)
자바에서 지원이 어떻게 되는지는 자세히는 모르겠지만, String과 byte가 따로 구분되어 있고 String이 유니코드를 지원하는 것으로 알고 있습니다. http://www.jorendorff.com/articles/unicode/java.html 문서를 보면 유니코드 문자열과 byte[]간의 변환 방법이 나와 있네요.
윗분 말씀처럼,
윗분 말씀처럼, 유니코드는 문자 집합(character set)이고, UTF-8, UTF-16 같은 것들이 인코딩 방식입니다.
-----------------------
From : http://symlink.tistory.com/20
웹과 같은 환경에서 외부로 부터 전달받은 한글문자열이 EUC-KR인지 UTF-8인지 판단이 필요할때
사용될수 있는 소스 입니다.
해당 소스는 자동으로 LocalString으로 변경해 줍니다.
public static String LocalString( String val)
{
if (val == null)
return null;
else {
byte[] b;
try {
b = val.getBytes("8859_1");
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
try {
CharBuffer r = decoder.decode( ByteBuffer.wrap( b));
return r.toString();
} catch (CharacterCodingException e) {
return new String( b, "EUC-KR");
}
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
} return null;
}
-----------------------
From : http://www.javaservice.net/~java/bbs/read.cgi?b=qna2&c=r_p&n=1123209037
| 제목 : 한글 코드 변환 euc-kr <-> utf-8 글쓴이: 손님(guest) 2005/08/05 11:30:37 조회수:756 줄수:21 |
안녕하십니까, |
| 제목 : Re: 움...저같은경우엔.. 글쓴이: 이규주(29zu) 2005/08/05 12:52:51 조회수:137 줄수:15 |
new OutputStreamWriter(new FileOutputStream(new File(tempFilePath,"tempRequest.txt")),"euc-kr"); |
| 제목 : Re: 한글 코드 변환 euc-kr <-> utf-8 글쓴이: 이희승(anoripi) 2005/08/06 10:25:04 조회수:314 줄수:11 |
자바에서 문자열은 내부적으로 보두 UTF-16 으로 관리됩니다. 따라서 내부적으로 EUc-KR |
| 제목 : Re:Re: 한글 코드 변환 euc-kr <-> utf-8 글쓴이: 손님(guest) 2005/08/09 13:46:42 조회수:165 줄수:15 |
질문했던 사람인데요, |
| 제목 : Re: 한글 코드 변환 euc-kr <-> utf-8 글쓴이: 이희승(anoripi) 2005/08/10 06:56:56 조회수:195 줄수:13 |
답변이 늦었군요. ^^;;
네 맞습니다. rs.getString(1) 하면 드라이버가 네트워크를 통해 DBMS 와 통신하여
가져온 값을 UTF-16 으로 변환해 메모리에 저장합니다.
화면에 출력할 때에는 다시 컨테이너에 지정된 캐릭터셋으로 변환하여 스트림으로
내보내지게 되는 것이구요.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- 유니코드(Unicode)에 대한 오해 by 시즈하
- 인코딩 및 유니코드 by adachi
- 인코딩~♪ by 루시펠
- 연모에서 내보내고 구글 리더에서 가져올때 by 구루민트
- 한글을 유니코드로 바꿔주기 by adachi
# by | 2008/05/12 21:00 | java | 트랙백



