UTF-16的八位元相容編碼方案

UTF-16的八位元相容編碼方案（），簡稱 CESU-8 ，是統一碼技术报告 #26 中描述UTF-8的变体。

CESU-8 的設計，是為了能在八位元的計算環境中，提供 UTF-16 的定序。因此，報告中也明確指出，只建議用在那些需要 UTF-16 定序，不被預期且不建議用於外部數據交換。

CESU-8 有以下特點：

 基本多语言平面中的字符編碼會與 UTF-8 相同，只有 增補字符會不同。
 只有六個字節形式的增符字符是合規的，UTF-8 中的四字節形式是不合規的。
 以 CESU-8 編碼後的字節串列以二進位方式定序，會與 UTF-16 編碼過的字節串列以二進位定序，其結果是一樣。

基本多语言平面中的字符碼位（即 U+0000 到 U+FFFF 范围内的碼位），其编码方式与 UTF-8 相同。 增補字符（即 U+10000 到 U+10FFFF 范围内的碼位），則先以同UTF-16的方式轉为代理对，然后以 UTF-8 的方式將代理對中的每個代碼进行编码。因此，对于每个統一碼增補字符，CESU-8 需要六个字节（每个代理项 3 个字节），而 UTF-8 只需要四个字节。虽然技术报告中没有具体说明，但未配对的代理項也會编码成为 3 个字节。非基本多文種平面的字符會被编码成11101101 1010yyyy 10xxxxxx 11101101 1011xxxx 10xxxxxx （yyyy 表示字符的前五位减一）。字节值 0xF0 不会出现在 CESU-8 中，因为它开始了 UTF-8 使用的 4 字节编码。

W3C  和WHATWG  HTML標準禁止在HTML文檔中支援 CESU-8，因为这会導致跨網站脚本漏洞。 

Java 的UTF-8修改版是 CESU-8，並將 NUL 字符 (U+0000) 的特殊超长编码，作为两字节序列C0 80 。 

Oracle 数据库使用 CESU-8 作为其“UTF8”字符集。若要使用標準 UTF-8 ，自 Oracle 9.0 版起，可以使用字符集“AL32UTF8”。

CESU-8 是IANA註冊的字符集。

 範例 
碼位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 85EDA0 81EDB0 80

 参考 

 外部链接 
 統一碼技術報告 #26 
 修改后的 UTF-8 定义 
 國際統一碼部件的转换器资源管理器中 CESU-8 的图形视图

Category:Unicode轉換格式