CESU-8

UTF-16용 호환 인코딩 체계: 8비트(Compatibility Encoding Scheme for UTF-16: 8-Bit, CESU-8)는 유니코드 기술 보고서 #26에 설명된 UTF-8의 한 변형이다. 기본 다국어 평면(BMP), 즉 U+0000부터 U+FFFF 범위의 유니코드 코드 포인트는 UTF-8과 동일한 방식으로 인코딩된다. 유니코드 보조 문자, 즉 U+10000부터 U+10FFFF 범위의 코드 포인트는 UTF-16에서처럼 먼저 서로게이트 쌍으로 표현된 다음 각 서로게이트 코드 포인트가 UTF-8로 인코딩된다. 따라서 CESU-8은 각 유니코드 보조 문자에 대해 6바이트(서로게이트당 3바이트)가 필요한 반면, UTF-8은 4바이트만 필요하다. 기술 보고서에는 명시되어 있지 않지만, 쌍을 이루지 않는 서로게이트도 각각 3바이트로 인코딩되며, CESU-8은 이전 UCS-2-UTF-8 변환기를 UTF-16 데이터에 적용하는 것과 정확히 동일하다.

유니코드 비BMP 문자의 인코딩은 11101101 1010yyyy 10xxxxxx 11101101 1011xxxx 10xxxxxx로 작동한다(yyyy는 문자에서 1을 뺀 상위 5비트를 나타낸다). UTF-8에서 사용되는 4바이트 인코딩을 시작하는 0xF0-0xF4 바이트 값은 CESU-8에 나타나지 않는다.

CESU-8은 유니코드 기술 보고서가 정보 문서일 뿐이므로 유니코드 표준의 공식적인 부분이 아니다. 내부 처리용으로만 사용해야 하며 외부 데이터 교환에는 사용해서는 안 된다.

W3C와 WHATWG HTML 표준은 HTML 문서에서 CESU-8을 지원하는 것을 금지한다. 이는 사이트 간 스크립팅 취약점을 야기할 수 있기 때문이다.

자바의 수정된 UTF-8은 NUL 문자(U+0000)를 두 바이트 시퀀스 C0 80으로 특수하게 오버롱 인코딩한 CESU-8이다.

오라클 데이터베이스는 "UTF8" 문자 집합에 CESU-8을 사용한다. 표준 UTF-8은 "AL32UTF8" 문자 집합을 사용하여 얻을 수 있다(오라클 버전 9.0부터).

 예시 

 코드 포인트 U+0045  U+0205  U+10400 문자 E  ȅ  𐐀 UTF-8 45 C8 85 F0 90 90 80 UTF-16 0045  0205  D801 DC00 CESU-8 45 C8 85 ED A0 81 ED B0 80

 각주 

 외부 링크 
 Unicode Technical Report #26
 Modified UTF-8 definition
 ICU의 Converter Explorer에서 CESU-8의 그래픽 보기

분류:문자 인코딩
분류:유니코드 변환 형식