본문 바로가기

반응형

UTF-8

(3)

Java에서 UTF-8 BOM(ByteOrderMark)이 제대로 처리 되지 않는 문제 백만년 만에 글. 너무 글을 안써서 오랜만에 생각나서 써 봄. ㅋ Java에서 제공하는 기본적인 Reader계열에서는 UTF-8의 BOM을 제대로 처리하지 못합니다. 그렇기 때문에 BOM이 있는 UTF-8 stream을 Reader로 넣으면, String의 제일 앞글자에 0xfeff 가 들어 오는 문제가 생깁니다. "UTF-8의 BOM을 제대로 처리 못하는 Java의 문제가 아니냐?" 고 물을 수 있겠지만은, Unicode 표준에는 UTF-8에 대해서는 BOM을 적지 않도록 권고(neither required nor recommended)하고 있습니다. 그런데 MS Windows 계열에서 만들어진 일부 문서에서는 BOM을 포함하는 경우가 종종있습니다. 이를 해결할 수 있는 방법은, 1. BOM에 대한 정..
[문자인코딩] 유니코드, UTF-8, UTF-16, UTF-32 간단 정리. 내용에 대해서 책임지지 않습니다. ㅋㅋ Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. http://www.unicode.org/standard/WhatIsUnicode.html 위에 설명되어 있는대로다. 유니코드란? unicode는 모든 문자에 index를 줘 놓은 것이다. 더 이상도 아니고, 더 이하도 아니다. 이 index를 code point라고 부르는데, 그냥 index라고 칭하도록 하자. 'A'라는 글자는 0x0041 이라는 index를 가진다. 'a'라는 글자는 0x0061 이라는 index를..
Java char로 어떻게 16bit 이상의 문자를 표현할 수 있을까? java.lang.Character JDK 1.4 : Character information is based on the Unicode Standard, version 3.0. JDK 5.0 : Character information is based on the Unicode Standard, version 4.0. Java에서 char 은 16bit 고정 길이를 가지도록 되어 있다. 하지만 unicode 의 값 중에는 U+0000 ~ U+FFFF 를 넘어서는 값도 있기 때문에 이에 대한 처리가 문제가 된다. 1 JDK 1.4의 api document 중에서 Character 에 관한 문서를 확인해 보고 ( http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Char..

반응형