Java 에서 SWT Combo 박스에 Item 추가 작업을 하다가 Linux 환경에서는 text 가 제대로 나오는데 Windows 에서는 text 앞부분에 이상한문자가 붙어서 나오는 현상을 경험하게 되었다.


Windows 에서 다음과 같이 "ar-ae" 앞에 이상한 문자가 껴있었다.


디버깅을 해도 전혀 이상한 점이 없어서 삽질을 하던중 구글링을 통해 UTF-8 인코딩시 BOM(Byte Order Mark) 라는 것을 알게 되었다.

 BOM 은 UTF-8 로 인코딩되었다는 일종의 마킹인데, 윈도우즈에서 일부 프로그램에서는 BOM 을 강제로 삽입하는 경우가 있다고 한다. -_-;

 참고: http://blog.wystan.net/2007/08/18/bom-byte-order-mark-problem


 따라서 이를 제거해야 하는데, Edit Plus 와 같은 툴을 이용하는 등의 방법이 있다.

 본인은 해당 파일을 Edit Plus 에서 UTF-8 BOM 이 추가안되도록 설정한 상태에서 해당 문자를 지우고 다시 타이핑하였더니 해당 문제가 사라졌다.

 Gerrit 에서 봐도 사람이 봐서는 알 수 가 없다.


 하지만 hex viewer 로 보면 다음과 같이 EF BB BF 라는 문자가 삽입되어 있다.


 문자열이 알 수 없는 문제로 말썽을 일으킬때 한번 살펴보아야 할 부분인것 같다.


 리눅스에서 텍스트 파일 인코딩을 변경하려면 iconv uconv 명령을 사용하여 인코딩을 변경 할 수 있다.


Posted by leechwin