CESU-8
| 유니코드 |
|---|
| 부호화 형식 |
| UCS |
| 양방향 텍스트 |
| BOM |
| 한중일 통합 한자 |
| 유니코드 범위 목록 |
| 유니코드 등가성 |
| 유니코드와 HTML |
| 유니코드와 전자 우편 |
| 유니코드 글꼴 |
UTF-16용 호환 인코딩 체계: 8비트(Compatibility Encoding Scheme for UTF-16: 8-Bit, CESU-8)는 유니코드 기술 보고서 #26에 설명된 UTF-8의 한 변형이다.[1] 기본 다국어 평면(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은 유니코드 기술 보고서가 정보 문서일 뿐이므로 유니코드 표준의 공식적인 부분이 아니다.[2] 내부 처리용으로만 사용해야 하며 외부 데이터 교환에는 사용해서는 안 된다.
W3C[3][4]와 WHATWG[5] HTML 표준은 HTML 문서에서 CESU-8을 지원하는 것을 금지한다. 이는 사이트 간 스크립팅 취약점을 야기할 수 있기 때문이다.[6]
자바의 수정된 UTF-8은 NUL 문자(U+0000)를 두 바이트 시퀀스 C0 80으로 특수하게 오버롱 인코딩한 CESU-8이다.[7]
오라클 데이터베이스는 "UTF8" 문자 집합에 CESU-8을 사용한다. 표준 UTF-8은 "AL32UTF8" 문자 집합을 사용하여 얻을 수 있다(오라클 버전 9.0부터).[8]
예시
[편집]| 코드 포인트 | 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 | ||||||
각주
[편집]- ↑ McGowan, Rick (2011년 12월 19일). “Unicode Technical Report #26 - Compatibility Encoding Scheme for UTF-16: 8-Bit (CESU-8)”. Unicode Consortium.
- ↑ “About Unicode Technical Reports - Types of Unicode Technical Reports: UAX, UTS, UTR”. Unicode Consortium.
- ↑ “8.2.2.3. Character encodings”. 《HTML 5.1 Standard》. W3C.
- ↑ “8.2.2.3. Character encodings”. 《HTML 5 Standard》. W3C.
- ↑ “12.2.3.3 Character encodings”. 《HTML Living Standard》. WHATWG.
- ↑ “<meta> - HTML”. 《MDN Web Docs》. Mozilla.
- ↑ “Java SE documentation for Interface java.io.DataInput, subsection on Modified UTF-8”. 오라클 (기업). 2015. 2021년 4월 30일에 확인함.
- ↑ “Table A-10 Universal Character Sets”.