국제 문자 집합

Universal Character Set (UCS). ISO/IEC 10646이 정의하는 문자 집합으로, 기술적으로는 완전히 같진 않지만 실질적으로는 유니코드가 정의하는 문자 집합과 동일하다. (유니코드는 문자 집합만 다루는 표준이 아니기 때문에 UCS는 유니코드가 정의하는 표준의 일부만을 기술한다.)

본래 UCS와 유니코드는 1990년을 전후하여 별개로 개발되던 표준으로, 유니코드는 0부터 65535까지의 16비트 코드포인트에 문자들을 할당하려 했던 반면(물론 나중에 서로게이트가 들어가게 되지만), UCS는 ISO 2022 등에 바로 적용될 수 있도록 코드 영역을 전통적인 행·열로 구성된 여러 개의 평면과 그룹으로 나눠 할당하는 정책을 취했다. 그래서 지금 기본 다국어 평면(BMP)이라 부르는 컨셉은 본래 UCS에서 출발한 것이다(그룹 0x20, 평면 0x20). 그러나 UCS가 ISO 2022만큼이나 복잡한 표준이 될 것이 분명해지면서 산업계가 UCS 대신 유니코드를 선호하게 되었고, 결국 UCS의 BMP가 유니코드와 동기화되면서 이중 표준 시대는 막을 내리게 된다. 이후 유니코드가 16비트 바깥으로 확장되며 UCS가 BMP 뿐만이 아닌 전체 유니코드 문자 집합과 정확히 일치하게 된다.

이렇게 하여 유니코드와 UCS는 실질적으로는 같은 문자 집합이 되지만, 기술적으로는 서로 다른 표준화 기구(유니코드 컨소시엄 및 ISO)에서 표준화를 하기 때문에 문자를 추가하거나 하는 제안은 두 쪽에서 모두 승인이 나야 표준에 들어 갈 수 있다1). 또한 버전 단위로 관리되는 유니코드와는 달리, ISO/IEC 10646은 한 번 대대적으로 고치려면 난리가 나기 때문에 문자만 추가될 경우 개정 표준만 내 놓는 경우가 많다. 예를 들어 ISO/IEC 10646:2003은 유니코드 4.0부터 5.2에 해당하며, 유니코드가 새 버전이 나올 때마다 비슷한 주기로 개정 표준이 꾸준히 나와 5.2에서는 개정 표준 여섯 개가 붙어 버렸다. (유니코드 6.0은 새로 나온 ISO/IEC 10646:2010과 거의 비슷하다. 루피문자가 유일한 차이.)

문자 인코딩에서의 UCS

UCS라는 용어가 유니코드 문자 인코딩의 이름으로 쓰일 경우 "서로게이트가 없는" 문자 인코딩을 의미한다. 따라서 UCS-4와 UTF-32는 같은 문자 인코딩인 반면, UCS-2와 UTF-16은 다른 문자 인코딩이다(UCS-2는 U+10000 윗쪽을 나타낼 수 없다). 애초에 UCS-2는 서로게이트라는 개념이 없을 때 만들어진 인코딩이며, BMP 이외의 다른 평면을 나타낼 목적으로는 ISO 2022를 사용할 생각이었기 때문에(…) 뭐 어쩔 수 없는 노릇이긴 하다.

1) 그리고 이 또한 당연한 얘기일 수도 있는데, 유니코드 컨소시엄 쪽이 ISO보다 훨씬 빨리 승인이 난다. 예를 들어 유니코드 파이프라인을 보면 ISO 표준화 절차는 최대 일곱 단계까지 갈 수 있음을 볼 수 있다….

도쿠위키DokuWiki-custom(rev 9085d92e02)을 씁니다.
마지막 수정 2011-05-30 18:25 | 외부 편집기