출처: http://pallas.egloos.com/1300407
기본 언어판 (기본 다국어 언어판)
줄여서 보통 BMP(Basic Multilingual Plane)로 표현한다. 비트맵이 아니다.
0x0000 - 0xFFFF 까지의 영역을 표현.
2바이트로 2^16, 즉 65,536개의 문자를 표현할 수 있다.
보충 언어판
Supplementary Plane이라고 한다. 16개의 언어판이 존재한다.
이전에도 언급했듯이 한자만 보더라도 기본 언어판으로는 세상의 모든 언어를 감당하기는 힘들다. 그래서 유니코드 3.0 부터는 보충 언어판을 정의했는데 예상대로 한자가 4만여자로 가장 많이 할당받았으며 그 밖에도 음악관련 기호, 수학용 문자및 기호등이 더 추가되었다.
0x00010000 - 0x0001FFFF 보충 언어판 (Supplementary Multilingual Plane)
0x00020000 - 0x0002FFFF 보충 표의문자판 (추가 한자영역)
0x00030000 - 0x000DFFFF 아직 사용안함
0x000E0000 - 0x000EFFFF 특별 보충판
0x000F0000 - 0x0010FFFF 사용자 영역
그렇다면, 보충언어판의 문자는 어떻게 표현해야 하는가 궁금해 진다.
유니코드용 문자열은 2바이트 기반의 wchar_t를 사용하는데, 보충언어판의 문자의 코드값은 이미 2바이트 범주를 넘어서지 않았는가..
여기서 부터, 골아픈 문제들이 다시 시작하게 된다.
이를 해결하기 위해, 기본 언어판에는 대행코드 영역이라는 것이 있는데 상위 대행코드와 하위 대행코드를 조합해서 보충언어판의 문자를 표현하자는 것이다.
결국 2바이트가 꼭 한개의 문자를 의미하는 것이 될 수 없다. 한개를 읽어보고 대행코드이면 한개를 더 읽어 한 문자를 완성해야 한다. 이는 마치 DBCS를 판단하기 위해 했던 짓과 거의 동일한 짓을 해야만 한다는 것을 의미한다.
기본 언어판의 대행코드 영역은 다음과 같다.
상위 대행코드 (High Surrogates) : D800 - DBFF
하위 대행코드 (Low Surrogates) : DC00 - DFFF
1024개의 상위 대행코드와 1024개의 하위 대행코드가 조합될 수 있으므로, 2^10 x 2^10, 즉 2^20개의 코드를 표현할 수 있다. 이것을 다시 표현해 보면 2^4 x 2^16으로, 위에서 언급했듯이 16개의 보충언어판을 표현할 수 있는 것이다.
댓글