Unicode그리고다른이야기들
ASCII ¶8 bit 로 표현하는 문자셋, 지속적으로 혼란이 있었으나 ANSI를 통해서 0~128미만 까지는 통일되었으며 그 뒤의 128개의 문자셋은 나라마다 다른 셋트로 정의되어 있으며 이를 code page라고 한다. 윈도우의 dos에서 chcp 를 사용하면 code page를 바꿀 수 있다. 한국은 949 미국은 437을 사용한다.
코드 페이지에 대한 자세한 정의 내용은 http://www.i18nguy.com/unicode/codepages.html#msftdos 에서 찾을 수 있다.
DBSC ¶이런 코드 페이지의 문제점은 아시아권 언어를 표현하는데 있어서 제약이 있다는 것이다, 이 제약을 DBCS(Double bytes character set)이라는 조합으로 해결하고 있는데 이것은 추가적으로 표현해야하는 문자에 대해서는 128부터 255까지의 cell의 1 byte가 하나의 또다른 2 byte 문자셋 테이블을 가리키도록 하고 있다. 이 DBCS의 문제는 문자열의 전후 이동이 자유롭지 못하고 AnsiNext, AnsiPrev 와 같이 DBCS에서의 이동을 위한 API를 권장하고 있다.
Unicode ¶ASCII와 같이 8bit의 제약으로 세상의 언어를 표현하지는 못한다. 이런 상황에서 unicode 라는 것이 생겨났는데 이것은 모든 문자를 U+0064 와 같은 유일한 code point로 표현하고 있다. unicode는 문자를 표현하기 위한 철학적인 접근의 산물이지 단순히 문자열을 표현하기 위한 2 byte(16 bit)문자로 생각하는 것은 올바르지 못하다.
UTF-8/16 등과 같은 것은 이런 unicode를 변환(encoding/decoding)하기 위한 format 규칙을 가리키는 것이다. Unicode Transformation Format 이 UTF이다.
좀 오래된 문서이지만 http://wiki.kldp.org/wiki.php/LinuxdocSgml/UTF8-Unicode-TRANS 을 참고하라.
|
There will be big changes for you but you will be happy. |