CESU-8
CESU-8UTF-16: 8비트(CESU-8)의 호환성 부호화 방식은 Unicode Technical Report #[1]26에서 설명되고 있는 UTF-8의 변형입니다.기본 다국어 플레인(BMP)으로부터의 유니코드 코드 포인트, 즉 U+0000~U+FFF 범위의 코드 포인트는 UTF-8과 같은 방법으로 부호화된다.유니코드 보충 문자, 즉 U+10000~U+FF, First의 코드 포인트.F-8. 따라서 CESU-8은 Unicode 보조문자별로 6바이트(대리점당 3바이트)가 필요한데 UTF-8은 4바이트만 필요합니다.기술 보고서에는 명시되어 있지 않지만 페어링되지 않은 대용품은 각각3 바이트로 부호화되어 있습니다.CESU-8은 오래된 UCS-2 to UTF-8 컨버터를 UTF-16 데이터에 적용하는 것과 동일합니다.
Unicode 비BMP 문자의 부호화는 다음과 같이 동작합니다.11101101 1010yyyy 10xxxxxx 11101101 1011xxxx 10xxxxxx
(yyyy는 문자에서 1을 뺀 상위5비트를 나타냅니다).바이트 값 0xF0~0xF4는 UTF-8에서 사용되는4 바이트 인코딩을 시작하기 때문에 CESU-8에는 표시되지 않습니다.
Unicode Technical Reports는 참고 자료일 [2]뿐이므로 CESU-8은 Unicode Standard의 공식 부분이 아닙니다.내부 처리에만 사용해야 하며 외부 데이터 교환에는 사용하지 않아야 합니다.
HTML 문서에서 CESU-8을 지원하는 것은 사이트 간 스크립팅 취약성이 [6]있기 때문에 W3C[3][4] 및 WHATWG[5] HTML 표준에서는 금지되어 있습니다.
Java의 Modified UTF-8은 CESU-8로, NUL 문자(U+0000)를 2바이트 시퀀스로서 특수한 오버롱 부호화 합니다.C0 80
를 클릭합니다.[7]
Oracle 데이터베이스는 "UTF8" 문자 집합에 CESU-8을 사용합니다.표준 UTF-8은 Oracle 버전 9.0 이후 문자 집합 "AL32UTF8"을 사용하여 얻을 수 있습니다.
예
코드 포인트 | 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. "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". Oracle Corporation. 2015. Retrieved 2021-04-30.