Unicode 와 BOM

Tip & Tech : 2008. 2. 28. 11:40

BOM 은 Byte Order Mark 의 약자로서 인코딩된 문서의 첫머리에 삽입되어 문서를 읽을때 문서의 인코딩 방식을 알수 있게 하는 일종의 코드 같은 역할을 하게 됩니다. 이들 BOM 의 종류는 인코딩 방식에 따라서 다음표와 같네요.

인코딩 방식 Byte Order Mark(BOM)
UTF-8 EF BB BF
UTF-16 Big Endian FE FF
UTF-16 Little Endian FF FE
UTF-32 Big Endian 00 00 FE FF
UTF-32 Little Endian FF FE 00 00

어떤 유니코드 문서를 헥사 에디터로 열어보면 위 표에 나와있는 BOM 을 확인 할 수 있습니다.
하지만, 흔히들 겪는 문제인, UTF-8 환경에서의 BOM 은 조금 특별한데, UTF-8 에서는 Byte Order 가 없기 때문에, 단지 UTF-8 이라는 문서를 나타내는 표식으로 사용될 뿐이라 있어도 그만 없어도 그만 이라는거지요. 그래서 그런지 유닉스나, 리눅스 환경에서는 UTF-8 에서 BOM 을 사용하지 않는다고 합니다. 그래서 흔히들 문제가 발생하지요.

특히나, 요즘에는 웹개발시 UTF-8 이 대세로 자리잡아 감에 따라서 종종 이런 문제가 발생하는데요. IE 에서 UTF-8 BOM 을 해석 못한다거나, MSXML Parser 에서 (버전마다 다르답니다.) UTF-8 BOM 을 해석하지 못하는 문제 때문에 프로그램이 제대로 동작을 안한다거나 하는 문제가 발생합니다.

이런 문제는 단순히 BOM 을 제거하면 됩니다만, BOM 을 확인해서 모두 없애주는 툴이 존재하는지는 저도 아직 잘 모르겠고요.. UTF-8 문서를 저장할때, BOM 을 저장하거나 저장안하는 옵션을 제공하는 에디터를 사용하면 되겠습니다.

Posted by 하루하루