웹 프로그래밍의 허와 실 - Character Set

웹 프로그래밍을 하다 보면 꼭 한두번씩 걸려서 상당히 시간 잡아먹는 캐릭터셋에 대해 이야기 해보겠습니다.

EUC-KR 이 유니코드보다 한글을 더 많이 지원한다?
요즘엔 어떨찌 모르겠는데 예전에 EUC-KR이 유니코드보다 한글을 완벽히 지원한다고 해서 유니코드가 안좋다는 식으로 이야기 하던 시절이 있었습니다. 하지만, 원칙적으로는 EUC-KR은 유니코드보다 한글 표현 및 한자 표현에 제한이 좀 많습니다. 예를들어 10년전 한컴에서 윈도우95에서 표현 못하지만 한글에서 표현 가능하다던 '똠방각하' 라던지, 예전에 DC에서 유행했던 '아햏햏', '쀍' 같은것은 물론 상당히 많은 수의 한글과, 한자를 사용 못합니다.

EUC-KR은 소스 코드 상에서 똠, 햏, 쀍 같은 글자가 코드로 나타난다.


물론 브라우저 상에서는 잘 나올수도 있습니다만 언제까지나 브라우저에서 처리를 하는거라 많은 문제가 발생합니다.
그럼 이 문제를 어떻게 해결 가능하냐...
사실 이 문제는 10년전에 이미 해결 된 상태입니다 =ㅅ=;;;

UHC, MS949로 불리는 CP949코드를 사용하면 해결 가능한데 EUC-KR의 확장 코드이고, 한글 윈도우의 기본 인코딩셋이라 Content-Type의 캐릭터셋을 cp949나, uhc로 변경하면 곧바로 사용 가능합니다.

charset을 uhc로만 바꿨을 뿐인데 잘 작동 된다


그리고 이론적으로 유니코드가 CP949보다 훨씬 더 많은 한글를 지원합니다.(모든 한글은 물론 옛한글 표현 가능) 단지 표현할 수 있는 프로그램이 극히 적어서 활용을 못할 뿐이지만요... (자세한것은 검색을)

유니코드UTF-8은 같다 다르다?
마치, Rock와, Metal은 같다(혹은 다르다)와, R&B와, Soul은 같다(혹은 다르다)와 비슷한 맥략입니다.
UTF-8은 유니코드의 한 종류입니다. (Metal은 Rock의 한 종류고, Soul은 R&B의 한 종류죠)

UTF-8의 한글 코드는 1캐릭터당 2바이트다
이 부분은 유니코드와 UTF-8의 구조를 알아야 하는 부분입니다. 일단, UTF-8은 ASCII 코드를 제외한 코드들을 1캐릭터당 2~4바이트로 표현합니다. 한글은 3바이트로 표현 되더군요. 그리고 한글중에 좀 특별한 경우(옛 한글이나, 조합형) 같은 경우에는 그 이상이 됩니다. 즉... 가변 -ㅅ-;;;

자바스크립트는 현재 페이지의 캐릭터셋을 사용한다.
자바스크립트 기본 캐릭터셋은 UTF-8입니다. 그리고 브라우저마다 다를 수 있겠지만 페이지 케릭터셋이 latin-1이나, euc-kr, uhc 어느것이더라도 자바스크립트에서 utf-8로 변환됩니다.

URL에 (혹은 GET메서드나, 파일명에) 한글을 넣어도 된다.
ASCII코드만 넣을 수 있습니다. (자세한것은 나중에) 그래도 혹시 넣는다면 UTF-8을 권장합니다. 거의 모든 브라우저가 한글을 UTF-8로 변환한 뒤, URL Encoding을 해서 전송하기 때문입니다...



결론은... UTF-8이 진리. -ㅅ-+



덧] 혹시 궁금한거 있으시면 꼭 캐릭터 셋이 아니더라도 질문해주세요... 제가 아는거면 추가 시킬께요 ㄷㄷ
저작자 표시 비영리 변경 금지
신고
Trackback 0 Comment 4
  1. 산적두목 2009.07.29 04:10 신고 address edit & del reply

    문제는 이게 뭔소린지 전혀 모르겠다는거지 ㅎㄷㄷㄷㄷㄷ

    • Favicon of http://blog.myhyuny.com BlogIcon 화현 2009.07.29 17:03 신고 address edit & del

      아마, 내가 너하고 있으면 자주 느끼는 그 기분일꺼야...

    • 산적두목 2009.08.02 14:30 신고 address edit & del

      ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

  2. 2009.08.17 11:10 address edit & del reply

    비밀댓글입니다



티스토리 툴바