백만년 만에 글. 너무 글을 안써서 오랜만에 생각나서 써 봄. ㅋ


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에 대한 정보를 inputStream에서 미리 읽어 버리고, BOM 이후부터 Reader에서 읽도록 처리하는 방법

 2. 얻어진 String에서 tmp = tmp.replace("\uFEFF", ""); 와 같은 방법으로 0xfeff 무시하기

 3. 각종 외부 라이브러리를 이용해서 처리 하기


입니다.


저작자 표시 비영리 변경 금지
신고
  1. 제미니 2014.07.08 13:41 신고

    이 글 덕분에 문제를 해결했습니다. 감사합니다!

+ Recent posts