ISO/IEC 2022
| 언어 | 다양함 |
|---|---|
| 표준 | ISO/IEC 2022, ECMA-35, JIS X 0202 |
| 분류 | 스테이트풀 인코딩 |
| 변환 / 암호 | US-ASCII 등 (구현체에 따라 다름) |
| 다음 인코딩 | ISO 10646 (유니코드) |
ISO/IEC 2022는 문자를 부호화하는 기술(techniques, 확장 기술 extension technique)로서, ISO 표준(ECMS 표준인 ECMA-35, ANSI 표준인 ANSI X3.41, 그리고 일본 산업 표준인 JIS X 0202와 같은)으로 다음과 같은 사항을 규정한다.
- 다중 그래픽 문자 집합과 1차 제어문자(C0)와 2차 제어문자(C1)를 포함해서, 단수 문자 체계를 포함하기도 하는, 특이한 구조의 복수 문자 체계의 하부구조(infrastructure),
- 이러한 문자 집합을 부호화하는 포맷(format),
- 각 바이트에서 7bits만을 사용하는 경우에 8bits를 다 사용하는 경우와 같은 방식으로 부호화하고, 또한 8bits 문자가 7bits 환경에서 그대로 사용될 수 있도록 하기 위한 포맷(format),
- ANSI escape codes를 위한 구조,
- 개개의 문자 집합을 식별하기 하고, 특정 부호 기능이나 하위집합의 사용을 알리고, 다른 부호화 체계와 상호작용하고 교환하기 위한, 특별한 이스케이프(escape) 부호 포맷(format)
ISO/IEC 2022 부호화에 포함된 많은 문자 집합들이 이중 바이트(double byte) 부호화인데, 2개의 바이트가 한 문자를 나타낸다. 이로 인해 ISO/IEC 2022의 부호화는 가변폭(variable width) 부호화가 된다. 그러나 어떤 특정 구현체가 표준이 정하는 모든 것을 구현할 필요는 없다. 특정 구현체에서는 자신이 지원하는 문자와 레벨이 따로 정한다.
ISO/IEC 2022 표준에서 규정된 많은 메카니즘들이 자주 사용되는 것은 아니지만, 몇몇 현존 부호화 방식들은 ISO/IEC 2022 시스템의 하위집합(subset)에 기반하고 있다. 특히, ISO/IEC 2022의 7bits 부호화 시스템의 구현체로는 일본어 이메일에서 주요하게 사용된는 ISO-2022-JP(혹은 JIS 부호화)가 있다. ISO/IEC 2022의 7bits 부호화 시스템의 구현체로는 ISO/IEC 4873(ECMA-43)(이는 또한 ISO/IEC 8859가 따른다)와 동아시아(East Asia)에서 사용되는 확장 유닉스 부호(Extented Unix Code)가 있다. ISO 2022의 좀 더 특별한 응용으로는 MARC 21 라이브러리 레코드에서 사용되는 MARC-8이 있다.
ISO/IEC 2022의 부호화 방식은 통상 문자 하나에 1바이트나 2바이트 이상을 쓰는 가변 문자 부호화 방식이며 한국어의 경우 EUC-KR이 이 부호화 방식을 사용한다.
소개
라틴 알파벳에 기반하지 않는 언어나 언어족들에는 그리스어, 키릴어, 아랍어, 히브리어 등이 있는데, 이들 언어들은 지금까지 다양한 방식의 8bits 확장 ASCII 부호화 방식으로 컴퓨터상에서 나타냈다. 동아시아 언어, 특히 한국어, 중국어, 일본어의 경우에는 그 문자들을 다 표현하기에는 8-bit 바이트로는 부족해서 처음에는 해당 언어에서 규정된 이중 바이트 부호화를 통해 표현되었다.
ISO/IEC 2022는 이러한 문제를 해결하기 위해 개발되었다. 즉 단수 문자 부호화 시스템으로 다중 문자 집합의 문자 표현하는 방법과 동아시아 언어와 같은 큰 문자 집합을 표현하기 위한 방법을 개발한 것이다.
ISO/IEC 2022의 두번째 요구사항은 7-bit 통신 채널들에서도 사용될 수 있어야 한다는 것이다. 비록 ISO/IEC 2022가 8-bit 부호체계이지만 8-bit 시퀀스는 정보의 손실없이 7-bit으로 다시 부화화될 수 있고, 단지 크기만 약간 커질 뿐이다.
다중 문자 집합을 표현하기 위해 ISO/IEC 2022 문자 부호화는 이스케이프 시퀀스(escape sequence)를 사용하는데, 이스케이프 시퀀스는 자신의 뒤에 오는 문자들의 문자집합을 나타낸다. 이스케이프 시퀀스는 ISO에 등록된 것이고, 표준에 의해 정의된 패턴을 따른다. 이러한 문자 부호화에서는 데이터가 진행방향으로 순서대로 처리되는데, 이는 데이타의 올바른 해석이 이전에 나타난 이스케이프 시퀀스에 의존하기 때문이다. 그러나 ISO-2022-JP 같은 다른 표준들은 라인 끝 이전에 '현 문자 집합' 을 US-ASCII로 리셋하는 여분 조건 등을 부여하기도 한다.
큰 문자 집합을 표현하기 위해 ISO/IEC 2022는 ISO/IEC 646의 속성을 이용한다. 이 속성에 의하면 하나의 7 bit 문자가 94개의 그래픽 문자(스페이스와 33개의 제어문자에 더해)를 정의한다. 2개의 바이트를 사용하면 8,836(94x94)개의 문자들을 표현할 수 있다. 3개의 바이트를 이용하면 830,584(94x94x94)개까지 문자들을 표현할 수 있다. 표준에는 비록 그렇게 정의되어 있지만, 3개의 바이트를 이용하는 등록된 문자 집합은 없다(EUC-TW의 비등록 G2는 아니지만). 2 바이트 문자 집합에서는 각 문자의 code point는 보통 kuten (일본어: 区点) 형식(form) (때로는 qūwèi (중국어: 区位)로 불리는데, 특히 GB2312와 그와 관련된 표준을 다룰 때)으로 지정되는데, 여기서 영역(zone) (区, 일본어: ku, 중국어: qū)과 그 영역에서의 해당 문자의 점(point) (일본어: 点 ten) 혹은 위치(position) (중국어: 位 wèi)이 지정된다.
그러므로 이스케이프 시퀀스는 단지 어느 문자 집합이 사용되는지만을 나타내는 것이 아니라, 문자 집합의 속성을 통해 94-, 96-, 8,836-, or 830,584-문자 (혹은 다른 크기의) 부호화가 다루어지는지를 나타낸다.
사실 문맥(contenxt)나 관례(convention)을 통해 어떤 한 국가의 문자 집합이 사용되는지를 알 수 있다면, 국가의 문자 집합을 나타내는 이스케이프 시퀀스는 없어도 된다. 예를 들어, ISO-8859-1는 이스케이프 시퀀스가 필요없다고 기술하고 있으며, ISO-2022-CN을 다루는 RFC 1922는 이스케이프 시퀀스의 명시적 사용없이 ISO-2022 SHIFT 문자가 사용되는 것을 허용한다.
ISO-8859-X 문자 집합의 ISO-2022 정의는 ISO-2022로 구성된 구성요소의 고정 조합이다. 특히 하위 제어 문자들(C0), US-ASCII 문자 집합(GL), 상위 제어 문자들(C1)은 표준이고, 상위 문자들(GR)은 ISO-8859-X의 변이로 정의된다. 예를 들어, ISO-8859-1는 shift와 문자 변환이 허용되지 않은 채로 ISO-IR-1, ISO-IR-6, ISO-IR-77 과 ISO-IR-100의 조합으로 정의된다.
제어 문자를 사용하는 ISO/IEC 2022 문자 집합이 여전히 공용으로 사용되긴 하지만, 특히 ISO-2022-JP, 가장 현대적인 이메일 응용프로그램은 UTF-8같은 간단한 유니코드 변환을 사용하기 위해 변환된다. ISO-8859처럼 제어 시퀀스를 사용하지 않는 부호화는 여전히 일반적으로 사용된다.
코드 구조
| 코드 | 축약 | 이름 | 효력 |
|---|---|---|---|
0x0F |
SI LS0 |
Shift In(SI) Locking shift zero |
GL → G0 (현재부터 인코딩) |
0x0E |
SO LS1 |
Shift Out(SO) Locking shift one |
GL → G1 (현재부터 인코딩) |
ESC 0x6E (n) |
LS2 | Locking shift two | GL → G2 (현재부터 인코딩) |
ESC 0x6F (o) |
LS3 | Locking shift three | GL → G3 (현재부터 인코딩) |
0x8E (N) |
SS2 | Single shift two | GL → G2 (다음 문자에 한해 인코딩) |
0x8F (O) |
SS3 | Single shift three | GL → G3 (다음 문자에 한해 인코딩) |
ESC 0x7E (~) |
LS1R | Locking shift one right | GR → G1 (현재부터 인코딩) |
ESC 0x7D (}) |
LS2R | Locking shift two right | GR → G2 (현재부터 인코딩) |
ESC 0x7C (|) |
LS3R | Locking shift three right | GR → G3 (현재부터 인코딩) |
덧붙임
- ISO/IEC 2022는 Ecma 인터내셔널의 ECMA-35와 대응한다.
같이 보기
외부 링크
- 잘못된 파일 링크가 포함된 문서
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- ISO 표준
- IEC 표준
- 문자 집합
- ISO/IEC 표준
- Ecma 표준