Backends PHP

웹개발자를 위한 문자 인코딩 기초 #3 – CP949 (UHC)

EUC-KR을 확장한 한글 문자 인코딩

이전 글에서 소개한 바와 같이, EUC-KR은 자주 사용하는 2,350자 외의 한글 문자는 모두 생략해버린 문제가 있었습니다. 결국 EUC-KR이 포함하지 못한 한글 문자들을 표현하기 위한 문자 인코딩 방식이 다양하게 등장하였습니다. 그러나 그 중에서도 국내 가장 널리 보급된 것은 바로 코드페이지 949, 흔히 CP949로 줄여서 부르는 인코딩 방식입니다.

CP949는 Microsoft에서 Windows 95에 처음 도입하였던 인코딩으로, 도입 당시에는 Windows에서만 사용되었기 때문에 반발이 많았습니다. 그러나 이후 Windows가 한국의 OS 시장을 장악하면서 현재는 거의 EUC-KR을 대체한 상태입니다. 심지어 대부분의 웹 브라우저에서 EUC-KR로 표시된 인코딩 옵션은 사실은 CP949 인코딩을 가리킵니다.

CP949는 확장완성형(UHC, Unified Hangul Codeset)이라는 또다른 이름을 가지고 있습니다. 완성형인 EUC-KR에서 표현하지 못했던 글자까지 인코딩 영역을 확장했다는 의미로 보입니다. 2가지의 이름은 보통 비슷한 빈도로 섞여서 사용되고 있습니다.

(more…)

Continue reading

Backends PHP

웹개발자를 위한 문자 인코딩 기초 #2 – EUC-KR

한글 문자 인코딩

ASCII는 대소문자를 합하여도 52개 밖에 되지 않는 알파벳을 사용하는 영어를 위한 인코딩 방식이었습니다. 그러나 불행히도 아랍어·한자·한글과 같이 문자 개수가 많은 언어는 1바이트 만으로 표시하기에는 공간이 부족합니다.

이 때문에 2바이트를 사용하여 문자를 표시하는 인코딩 방식들이 언어마다 등장하기 시작하였습니다. 그 중에서 가장 유명한 것이 동아시아 언어들을 위하여 만들어진 Extended Unix Code(약칭 EUC)인데, 94개의 값을 2바이트씩 붙여서 사용하는 방법입니다. 이 방법으로 중국 간체를 위한 EUC-CN, 대만 번체를 위한 EUC-TW, 일본어를 위한 EUC-JP 등이 만들어졌습니다.

이 글에서 소개할 EUC-KR은 EUC 중에서도 한글을 위하여 만들어진 인코딩 방식이며, 현재도 널리 사용되고 있습니다.

(more…)

Continue reading

Backends PHP

웹개발자를 위한 문자 인코딩 기초 #1 – ASCII 코드

문자 인코딩의 등장과 ASCII 코드

컴퓨터는 문자를 이진수로 바꾸어서 저장하거나 처리합니다. 이 때 어떤 이진수 숫자가 어떤 문자로 바꾸어어야 하는지는 미리 정해놓은 규칙들이 있습니다. 이것을 문자 인코딩이라고 합니다.

가장 대표적인 문자 인코딩에는 흔히 “아스키 코드”라고 부르는 ASCII(American Standard Code for Information Interchange)가 있습니다. ASCII 코드는 1967년에 처음 제정된 유서깊은 인코딩 방식으로, 미국에서 영문, 숫자, 특수문자들을 위하여 고안한 방식입니다.

ASCII 코드는 본래 7비트로 되어 있습니다. 그러나 현대의 컴퓨터는 1바이트(=8비트)를 기준으로 정보를 처리하기 때문에, 현재는 ASCII 코드 가장 앞 비트에 0을 넣어 8비트로 만들어 사용합니다. 이렇게 만들어진 8비트의 ASCII 코드를 ISO 8859 방식이라고 하는데, 보통 ASCII 코드라고 하면 바로 이 ISO 8859 방식을 말합니다. 16진수로 보면 0x00~0x7F까지 총 128개의 값을 문자를 위해 사용하는 셈이 됩니다. (숫자 앞에 붙은 0x는 10진수 숫자와 혼동하지 않기 위해서 16진수 숫자 앞에 붙여주는 기호같은 것입니다.)

(more…)

Continue reading