메뉴 건너뛰기

Dev tips

HTML / CSS [HTML] euc-kr and CP949

taknim 2009.08.13 03:17 조회 수 : 11681 추천:2870

http://dialup.egloos.com/1095875 소프트웨어 개발시 인코딩, 코드페이지...들에 대해서 고민을 때가 많은데, 이에 대해서 정확한
지식을 가지고 있는 개발자도 그렇게 많지는 않다.


"어? 웹페이지에서 왜 한글이 깨지지?"
"인코딩 방법 바꿔봐~"
"뭘로?"
"음...euc-kr ksc-5601...utf-8... 어, 그거 utf-8이면 파일이 utf-8로 저장이 되어 있어?..."


"terminal에서 한글이 입력도 안되고 깨어지네... 왜 이렇지?"
".bashrc에 charset을 세팅해봐..."
"뭘로?"
"ko_KR.eucKR..."


나도 이런 대화들을 많이 했던것 같다. 새로운 문제들 때문에 한 것이 아니라 제대로 모르고 그냥
해결방법만 어떻게 찾아서 '적용해보니 되네...'로 지나가 버렸던 것이 문제이다. 얼마전 문자의
인코딩 부분에 대해서 공부를 해 보려고 여러 자료들을 찾아보니... 이거 명확하게 이해를 하려면
오래된(?) history까지 알아야 되는 쉽지 않은 일이었다. 그래서 잠시 잊고 있었는데...
서비스하고 있는 웹사이트에서 특정 한글이 깨어지는 일이 있었다. 그래서 보니 해당 프로세스에서
HttpUtility.UrlEncode와 HttpUtility.UrlDecode를 사용하는데 encoding을 euc-kr로 처리하고 있었다.
문제가 된 글자는 "흿"... *근데 "샾"도 안된단다...ㅋㅋ 설마 했는데 "샾"도 안된다. "포스코 더 샾" ㅎ~
자주 쓰는 글자는 아니지만 저게 왜 깨어지지?라는 생각이 들었는데, 여러가지 이유로 euc-kr은
상당히 많은 조합가능한 한글들을 지원하지 않는다. 


*한글 인코딩에 대한 KLDP 토론 thread 참고
http://kldp.org/node/98856


그럼 euc-kr에서 사용할 수 없는 한글은??? 아래에서 euc-kr에 정의된 한글 전체 목록을 볼 수 있다.
http://zbxe.bluegate.kr/42


*윈도우에서 한글 구현을 위해 사용하는 코드페이지인 cp949(확장 한글 완성형)는 기존 euc-kr을 그대로
 가져오고, 거기에 정의되지 않은 한글들에 대해서 추가 한 것이다.
 확장 한글 완성형(cp949)에 대한 전체 code table은 찾을 수가 없어 MS에서 제공되는 cp949와
 unicode와의 mapping table 자료를 base data로 사용하여 출력 포멧을 변경해 보았다.
 -MS에서 제공되는 cp949와 unicode의 매핑 테이블
  http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT
 -첨부파일 레이아웃 : cp949 code : 대응한글   해당코드에 대한 MS의 영문 표기 (총 17,048건 ascii코드 제외)