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

UTF-16的八位元相容編碼方案(英語:Compatibility Encoding Scheme for UTF-16: 8-Bit),簡稱 CESU-8 ,是統一碼技术报告 #26 中描述UTF-8的变体[1]

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 [2] [3]WHATWG [4] HTML標準禁止在HTML文檔中支援 CESU-8,因为这会導致跨網站脚本漏洞。 [5]

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

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

CESU-8 是IANA註冊的字符集[7]

範例

碼位 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

参考

  1. ^ McGowan, Rick. Unicode Technical Report #26 - Compatibility Encoding Scheme for UTF-16: 8-Bit (CESU-8). Unicode Consortium. [2021-11-17]. (原始内容存档于2021-12-08). 
  2. ^ 8.2.2.3. Character encodings. HTML 5.1 Standard. W3C. [2021-11-17]. (原始内容存档于2021-07-18). 
  3. ^ 8.2.2.3. Character encodings. HTML 5 Standard. W3C. [2021-11-17]. (原始内容存档于2019-07-03). 
  4. ^ 12.2.3.3 Character encodings. HTML Living Standard. WHATWG. [2021-11-17]. (原始内容存档于2022-01-07). 
  5. ^ <meta> - HTML. MDN Web Docs. Mozilla. [2021-11-17]. (原始内容存档于2022-01-14). 
  6. ^ Java SE documentation for Interface java.io.DataInput, subsection on Modified UTF-8. Oracle Corporation. 2015 [2021-04-30]. (原始内容存档于2021-11-03). 
  7. ^ IANA 的 CESU-8 註冊記錄. [2021-11-17]. (原始内容存档于2020-09-21). 

外部链接

  • 統一碼技術報告 #26 (页面存档备份,存于互联网档案馆
  • 修改后的 UTF-8 定义 (页面存档备份,存于互联网档案馆
  • 國際統一碼部件的转换器资源管理器中 CESU-8 的图形视图
早期電信
  • 電報電碼英语Telegraph code
    • 庫克與惠斯通英语Cooke and Wheatstone telegraph
    • 摩斯
      • 非拉丁字母英语Morse code for non-Latin alphabets
      • 日文英语Wabun code
      • 中文
      • 西里爾字母英语Russian Morse code
      • 韓文英语SKATS
    • 博多與莫瑞
  • Fieldata英语Fieldata
  • ASCII
  • BCDIC英语BCD (character encoding)
  • 電傳文訊英语Teletex電傳視訊英语Videotex電視資訊
    • T.51/ISO/IEC 6937英语T.51/ISO/IEC 6937
    • ITU T.61英语ITU T.61
    • ITU T.101英语Videotex character set
    • 世界系統電傳文訊英语World System Teletext
      • 字元集英语Teletext character set
ISO/IEC 8859
書目
  • MARC-8英语MARC-8
  • ISO 5426英语ISO 5426
  • ISO 5427英语ISO 5427
  • ISO 5428英语ISO 5428
  • ISO 6438
  • ISO 6862英语ISO 6862
國家標準
ISO/IEC 2022
macOS代码页
  • 亞美尼亞文英语Mac OS Armenian
  • 阿拉伯文
  • 巴倫支西里爾字母英语Mac OS Barents Cyrillic
  • 凱爾特語族英语Mac OS Celtic
  • 中歐語言
  • 克羅埃西亞文英语Mac OS Croatian encoding
  • 西里爾字母英语Mac OS Cyrillic encoding
  • 梵文
  • 波斯文英语MacFarsi encoding
  • 字體X英语Macintosh Font X encoding
  • 蓋爾文英语Mac OS Gaelic
  • 喬治亞文英语Mac OS Georgian
  • 希臘文英语MacGreek encoding
  • 古吉拉特文英语Mac OS Gujarati
  • 古木基文英语Mac OS Gurmukhi
  • 希伯來文英语Mac OS Hebrew
  • 冰島文英语Mac OS Icelandic encoding
  • 因紐特文英语Mac OS Inuit
  • 鍵盤英语Mac OS Keyboard encoding
  • 拉丁文英语Macintosh Latin encoding
  • 馬爾他文/世界文英语Mac OS Maltese/Esperanto encoding
  • 歐甘字母英语Mac OS Ogham
  • 羅曼語族
  • 羅馬尼亞文英语Mac OS Romanian encoding
  • 薩米文英语Mac OS Sámi
  • 土耳其文英语Mac OS Turkish encoding
  • 土耳其西里爾字母英语Mac OS Turkic Cyrillic
  • 烏克蘭文英语Mac OS Ukrainian encoding
  • VT100英语VT100 encoding
DOS代碼頁
  • 437
  • 668英语Code page 668
  • 708英语Code page 708
  • 720英语Code page 720
  • 737英语Code page 737
  • 770英语Code page 770
  • 773英语Code page 773
  • 775英语Code page 775
  • 776英语Code page 776
  • 777英语Code page 777
  • 778英语Code page 778
  • 850英语Code page 850
  • 851英语Code page 851
  • 852英语Code page 852
  • 853英语Code page 853
  • 855英语Code page 855
  • 856英语Code page 856
  • 857英语Code page 857
  • 858英语Code page 858
  • 859英语Code page 859
  • 860英语Code page 860
  • 861英语Code page 861
  • 862英语Code page 862
  • 863英语Code page 863
  • 864英语Code page 864
  • 865英语Code page 865
  • 866英语Code page 866
  • 867英语Code page 867
  • 868英语Code page 868
  • 869英语Code page 869
  • 897英语Code page 897
  • 899英语Code page 899
  • 903英语Code page 903
  • 904英语Code page 904
  • 932英语Code page 932 (IBM)
  • 936英语Code page 936 (IBM)
  • 942英语Code page 942
  • 949英语Code page 949 (IBM)
  • 950
  • 951英语Code page 951
  • 1040英语Code page 1040
  • 1042英语Code page 1042
  • 1043英语Code page 1043
  • 1046英语Code page 1046
  • 1098英语Code page 1098
  • 1115英语Code page 1115
  • 1116英语Code page 1116
  • 1117英语Code page 1117
  • 1118英语Code page 1118
  • 1127英语Code page 1127
  • 3846英语Code page 3846
  • ABICOMP英语ABICOMP character set
  • CS Indic英语CS Indic character set
  • CSX Indic英语CSX Indic character set
  • CSX+ Indic英语CSX+ Indic character set
  • CWI-2英语CWI-2
  • 伊朗系統英语Iran System encoding
  • 卡梅尼茨英语Kamenický encoding
  • 馬索維亞英语Mazovia encoding
  • MIK英语MIK (character set)
IBM AIX代碼頁
  • 895英语Code page 895
  • 896英语Code page 896
  • 912英语Code page 912
  • 915英语Code page 915
  • 921英语Code page 921
  • 922英语Code page 922
  • 1006英语Code page 1006
  • 1008英语Code page 1008
  • 1009英语Code page 1009
  • 1010英语Code page 1010
  • 1012英语Code page 1012
  • 1013英语Code page 1013
  • 1014英语Code page 1014
  • 1015英语Code page 1015
  • 1016英语Code page 1016
  • 1017英语Code page 1017
  • 1018英语Code page 1018
  • 1019英语Code page 1019
  • 1124英语Code page 1124
  • 1133英语Code page 1133
Microsoft Windows代碼頁英语Windows code page
  • CER-GS英语CER-GS
  • 932英语Code page 932 (Microsoft Windows)
  • 936
  • 950
  • 1169英语Code page 1169
  • Extended Latin-8英语Extended Latin-8
  • 1250英语Windows-1250
  • 1251英语Windows-1251
  • 1252
  • 1253英语Windows-1253
  • 1254英语Windows-1254
  • 1255英语Windows-1255
  • 1256英语Windows-1256
  • 1257英语Windows-1257
  • 1258英语Windows-1258
  • 1270英语Windows-1270
  • 西里爾字母+芬蘭文英语Windows Cyrillic + Finnish
  • 西里爾字母+法文英语Windows Cyrillic + French
  • 西里爾字母+德文英语Windows Cyrillic + German
  • 希臘語變音符號英语Windows Polytonic Greek
EBCDIC代碼頁
  • 37英语Code page 37
  • EBCDIC中的日文英语Japanese language in EBCDIC
  • DKOI英语DKOI
DEC終端機(VTx英语VT220
  • MCS英语Multinational Character Set
  • NRCS英语National Replacement Character Set
    • 加拿大法文英语Code page 1020
    • 瑞士文英语Code page 1021
    • 西班牙文英语Code page 1023
    • 英國英文英语Code page 1101
    • 荷蘭文英语Code page 1102
    • 芬蘭文英语Code page 1103
    • 法文英语Code page 1104
    • 挪威文/丹麥文英语Code page 1105
    • 瑞典文英语Code page 1106
    • 挪威文/丹麥文(替代)英语Code page 1107
  • 8位元希臘文英语Code page 1287
  • 8位元土耳其文英语Code page 1288
  • SI 960英语SI 960
  • 希伯來文英语DEC Hebrew
  • 特殊圖形英语DEC Special Graphics
  • 技術英语DEC Technical Character Set
特定平臺
  • 1057英语Code page 1057
  • Acorn英语RISC OS character set
  • Adobe標準英语PostScript Standard Encoding
  • Adobe Latin 1英语PostScript Latin 1 Encoding
  • Amstrad CPC英语Amstrad CPC character set
  • Apple II英语Apple II character set
  • 雅達利資訊交換標準碼英语ATASCII
  • 雅達利ST英语Atari ST character set
  • BICS英语Bitstream International Character Set
  • 卡西歐計算機英语Casio calculator character sets
  • CDC英语CDC display code
  • Compucolor II英语Compucolor II character set
  • CP/M+英语Amstrad CP/M Plus character set
  • DEC RADIX 50英语DEC RADIX 50
  • DEC MCS英语Multinational Character Set/NRCS英语National Replacement Character Set
  • DG國際英语DG International
  • Fieldata英语Fieldata
  • GEM英语GEM character set
  • GSM 03.38英语GSM 03.38
  • HP Roman英语HP Roman
  • HP FOCAL英语FOCAL character set
  • HP RPL英语RPL character set
  • SQUOZE英语SQUOZE
  • LICS英语Lotus International Character Set
  • LMBCS英语Lotus Multi-Byte Character Set
  • MSX英语MSX character set
  • NEC APC英语NEC APC character set
  • NeXT英语NeXT character set
  • PETSCII英语PETSCII
  • SEGA SC-3000英语Sega SC-3000 character set
  • 夏普計算機英语Sharp pocket computer character sets
  • 夏普MZ英语Sharp MZ character set
  • 辛克萊QL英语Sinclair QL character set
  • 符號
  • 電傳文訊英语Teletext character set
  • 德州儀器計算機英语TI calculator character sets
  • TRS-80英语TRS-80 character set
  • 文圖拉國際英语Ventura International
  • WISCII英语Wang International Standard Code for Information Interchange
  • XCCS英语Xerox Character Code Standard
  • ZX80英语ZX80 character set
  • ZX81英语ZX81 character set
  • ZX Spectrum英语ZX Spectrum character set
Unicode通用字符集
TeX排版系統
  • 科克英语Cork encoding
  • LY1英语LY1 encoding
  • OML英语OML encoding
  • OMS英语OMS encoding
  • OT1英语OT1 encoding
其他代碼頁
  • ABICOMP英语ABICOMP character set
  • ASMO 449英语ASMO 449
  • 大五碼
  • APL符號數位編碼英语Digital encoding of APL symbols
    • ISO-IR-68英语ISO-IR-68
  • ARIB STD-B24
  • HZ英语HZ (character encoding)
  • IEC-P27-1英语IEC-P27-1
  • INIS
    • 7位元英语INIS character set
    • INIS-8英语8位元
  • ISO-IR-169英语ISO-IR-169
  • ISO 2033英语ISO 2033
  • KOI
    • -R
    • -RU英语KOI8-RU
    • -U
  • 今昔文字鏡
  • SEASCII英语Stanford Extended ASCII
  • Stanford/ITS英语Stanford/ITS character set
  • TRON英语TRON (encoding)
  • 統合韓文代碼英语Unified Hangul Code
控制字符
相關條目
分类 字元集