캐릭터셋 인코딩 탐지(Charset Encoding Detection)

캐릭터셋 인코딩은 개발자를 지속적으로 괴롭히는 몬스터 중에 하나입니다. 일단 규격 자체가 많은 것은 첫 번째 괴로움이고 규격을 안 지키는 사람이 많다는 사실은 두 번째 괴로움입니다. XML이나 HTTP 헤더처럼 인코딩 정보를 명시적으로 보내주는 경우는 그나마 상황이 나은데, 인코딩을 전혀 알 수 없는 것 중에 하나가 자막 파일입니다.

국내에서 많이 쓰는 SMI 파일의 경우 .KRCC니 .ENCC니 하면서 언어는 지정하는데 정작 어떤 인코딩으로 파일이 인코딩되었는지 정보가 없습니다. 국내에 돌아다니는 SMI 파일은 대부분 EUC-KR을 쓰긴 하지만 꼭 한국어만 SMI로 만들라는 법도 없으니깐요. 외국에서 많이 쓰는 SRT 포맷은 SMI 포맷보다 더 간단합니다. 어떤 언어인지도 모르고 인코딩도 모르고 다짜고짜 시간-자막이 반복되는 포맷입니다.

이런 경우에 사용할 수 있는 라이브러리가 Universal Encoding Detector입니다. 원래 Mozilla에서 인코딩이 없는 페이지의 캐릭터셋을 자동으로 찾아내기 위해 시작한 프로젝트입니다. A composite approach to language/encoding detection라는 제목으로 자료가 공개되어 있습니다. 기본 아이디어는 EUC-KR이 한글 인코딩에 사용되는 것처럼 특정 인코딩은 특정 언어에만 많이 사용되므로, 각 언어의 패턴을 인식해서 인코딩을 찾아내는 것입니다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s