출처: http://openlook.org/trac/wiki/EUC
EUC (Extended Unix Coding) 인코딩은 중국과 한국에서 가장 널리 쓰이는 인코딩 형태로, 단순미와 강력함이 장점입니다. ;) (일본과 대만에서도 유닉스 유저들은 널리 쓰고 있습니다.)
EUC 인코딩 8비트 영역을 모두 사용하며, 8비트를 크게 4개로 나눕니다.
- CL(Control-Left): 0x00-0x1f
- GL(Graphic-Left): 0x20-0x7f
- CR(Control-Right): 0x80-0x9f
- GR(Graphic-Right): 0xA0-0xff
그림으로 하면
8 bit 범위 | |||
CL | GL | CR | GR |
0x00 ~ 0x1f | 0x20 ~ 0x7f | 0x80 ~ 0x9f | 0xa0 ~ 0xff |
GR은 보통 2바이트 시퀀스로 붙여서 94x94 문자셋을 할당하는 데, EUC-CN과 EUC-KR의 경우에는 그냥 단순히 GL에는 ASCII를 할당하고, GR에는 각각 GB2312와 KS X 1001을 할당하는 것으로 끝납니다. 결국, KS X 1001의 30-21에 배치되어 있는 '가'라는 글자는 EUC-KR 인코딩에서 GR에 배치되면서 MSB가 세팅되어 0xB0A1로 최종적으로 표현됩니다.
그런데, GL, GR을 고정적으로 할당한 CN, KR과는 달리 EUC-TW나 EUC-JP에서는 사용할 수 있는 문자셋이 여러 평면으로 나뉘어져 있기 때문에, 단순히 미리 할당된 것만으로는 사용될 수 없어서, 0x8e와 0x8f의 SS(Single-Shift) 코드들을 사용합니다. EUC-JP의 경우에는 다음과 같이 배치가 되어 있습니다.
문자셋 | 코드 | 설명 |
ASCII | [0x20-0x7f] | 아스키는 항상 GL에 배치됩니다. |
JIS X 0201 | 0x8e [0xa1-0xdf] | JIS X 0201중 반각 카타카나 부분은 앞에 0x8e를 쓴 다음에 씁니다. |
JIS X 0208 | [0xa1-0xfe] [0xa1-0xfe] | JIS X 0208 문자들은 각각 MSB를 세팅해서 그냥 씁니다. |
JIS X 0212 | 0x8f [0xa1-0xfe] [0xa1-0xfe] | JIS X 02012 문자들은 0x8f를 앞에 쓴 다음에 MSB를 세팅해서 씁니다. |
이렇게 되어서, 결국 EUC-JP는 1/2/3 바이트 가변폭 인코딩이 되고, 화면 출력과 코드 너비가 다른 인코딩이 됩니다. (불편하지만 별 수 없는~)
EUC-TW는 현재 할당된 평면이 17개 (유효평면 10개)나 되기때문에, 더욱 더 복잡한데,
문자셋 | 코드 | 설명 |
ASCII | [0x20-0x7f] | 아스키는 항상 GL에 |
CNS11643-1 | [0xa1-0xfe] [0xa1-0xfe] | Plane 1을 기본 GR에 배치합니다. |
CNS11643-1~16 | 0x8e [0xa1-0xb0] [0xa1-0xfe] [0xa1-0xfe] | Plane 1 <!> 부터 16까지는 0x8e를 앞에 붙이고, 그 다음에는 1번부터 순서대로 0xa1부터 16번은 0xb0까지 쓴 다음에 진짜 두 글자를 MSB 세팅해서 붙입니다. |
이렇게 되어서, 결국 1/2/4 바이트 가변폭 인코딩이 됩니다. 그런데, Plane 1은 2바이트짜리와 4바이트짜리에 둘 다 할당이 되어있는데, 둘 중 어느 한가지만 옳은 것은 아니고, 표준에서 둘 다 사용할 수 있도록 되어있습니다. (둘은 서로 동등 연속--equivalent sequence--로 처리해야합니다.)
'Programing' 카테고리의 다른 글
윈도우 스크립팅 맛들이기 - Smalltalk 이미지 파일 백업 배치파일 (2) | 2007.02.07 |
---|---|
윈도우 스크립팅 걸음마 (3) | 2007.02.07 |
위기지학(爲己之學) (0) | 2006.11.29 |
Drag & Drop로 구현한 쇼핑몰 샘플 (0) | 2006.11.09 |
JAVA(JSP)가 좋은점이 무엇이냐... (1) | 2006.10.28 |