사용자 도구

사이트 도구


kb:unicode

Unicode

유니코드

개념

자주 나오는 단어들을 정리해보자.

  • character set
    • 말 그대로 글자들의 집합. 프로그래밍이나 컴퓨터와는 아무 상관이 없다.
    • 그러나 프로그래밍 쪽에서는 code-page에 의해서 이 글자들의 조합이 결정되므로, 종종 code-page와 혼용된다.
  • locale
    • 문자 뿐만 아니라, 나라/지역/문화 등을 모두 반영한 각종 기능의 집합
  • code-page
    • 한정된 갯수의 글자에 각각 번호(code-point value)를 부여하고, 이를 정렬한(ordered) 셋
  • encoding
    • 글자에 순서값을 부여하는 방법 혹은 시스템. 즉 code-page를 구성하는 방법.
    • ASCII, Unicode, Windows 1252 등이 이에 해당한다.

Unicode Encoding

유니코드는 8, 16, 32비트 인코딩을 모두 정의하고 있으며, 이중 16비트 인코딩이 표준이다.

UTF-16

기본적으로 16비트 인코딩은 65535개의 글자를 표현 가능한데, 표현해야하는 글자들은 이보다 많다. 이를 위해서 16비트 인코딩에서는 surrogate pairs 라는 개념을 사용한다. 두개의 16비트로 글자를 표현하는 것이다. U+D800 ~ U+DBFF(1024) 영역과 U+DC00 ~ U+DFFF(1024) 영역을 조합해서 사용한다.

U+10000 미만의 글자들은 그냥 16비트로 표현할 수 있다. 대부분의 언어가 여기 포함되는데, 이 영역을 BMP(Basic Multilingual Plane)라고 부른다. 이외에도 16개의 Plane이 존재한다.

UTF-8

하나의 글자를 표현함에 있어 1바이트부터 4바이트까지 가변으로 사용하는 인코딩 시스템

유니코드 영역과 인코딩된 형태는 다음과 같다.

유니코드 영역 UTF-8 형태
0x00000000 - 0x0000007F 0xxxxxxx
0x00000080 - 0x000007FF 110xxxxx 10xxxxxx
0x00000800 - 0x0000FFFF 110xxxxx 10xxxxxx 10xxxxxx
0x00010000 - 0x001FFFFF 110xxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Reading UTF-8 with C++ streams 참고

UTF-32

…어디서 쓰지?

BOM(Byte Order Mark)

텍스트 파일에는 XML 파일과 같은 헤더가 없기 때문에, 임의의 텍스트 파일이 어떤 인코딩으로 구성되어 있는지를 판단할 수가 없다. 이 문제를 해결하기 위해 텍스트 파일 제일 앞쪽에다 잘 쓰이지 않고, 여러 인코딩을 구별할 수 있는 일련의 바이트들을 기록하는 방법이 나왔는데, 이것은 Byte Order Mark다.

아래의 표는 위키피디어에서 가져온 것이다.

Encoding Representation
UTF-8 EF BB BF
UTF-16 Big Endian FE FF
UTF-16 Little Endian FF FE
UTF-32 Big Endian 00 00 FE FF
UTF-32 Little Endian FF FE 00 00

목록

링크


kb/unicode.txt · 마지막으로 수정됨: 2014/11/11 20:13 저자 excel96