fbpx
维基百科

統一碼二進制有序壓縮

統一碼二進制有序壓縮[1](英語:Binary Ordered Compression for Unicode,縮寫:BOCU)是統一碼技術注解文件所定義的規範[2],可以兼容MIME的統一碼压缩方案。

雖然UTF-8適合廣泛使用,但對於非拉丁文和中日韓統一表意文字的文字,相較於代码页技術,它佔用了更多的空間(較高的 "字節 / 碼位" 之比)。另一方面,SCSU 佔用的空間與代碼頁差不多,但卻不相容於MIME。二進制有序壓縮則结合了UTF-8的廣泛適用性和統一碼標準壓縮方案(SCSU)的紧凑性。[2]

这种编码旨在用于压缩短字符串,并保持码点顺序。

BOCU-1是IANA注册的字符集[3]

细节 编辑

本章節中使用的數字都是十六進制,且使用的範圍都是包含在内。

統一碼二進位有序壓縮的核心概念在於:同一種語言的字符,通常被放在鄰近位置(同一區段內),所以文件中的一個字符與前一個字符碼值的差值是小的,可以用較少的字節來編碼。

而實際作法上,不是直接使用前一個字符的碼值,而是前一固字符歸一化的碼值,即所在區段的中間值。其對應如下:

編碼范围 歸一化碼值 笔记
U+3040U+309F U+3070 平假名
U+4E00U+9FA5 U+7711 中日韓統一表意文字
U+AC00U+D7A3 U+C1D1 韩文
U+0020 编码器状态保持原样 空格
U+ hhhh00 U+hhhh7F

(不包括上述范围)

U+hhhh40 中间
共128个
U+hhhh80 U+hhhhFF

(不包括上述范围)

U+hhhhC0 中间
共128个

此壓縮法的規則為,码位U+0020使用其原本的值。其他码位(即U+0021U+D7FFU+E000U+10FFFF ),則計算其與前一個字符的歸一化版本的碼值差值,並對此差值編碼。

差值的編碼規則如下:

差值範圍 字节序列范围
(见下文)
-10FF9F-2DD0D 21 F0 58 D921 FF FF FF
-2DD0C-2912 22 01 0124 FF FF
-2911-41 25 014F FF
-403F 50CF
402910 D0 01FA FF
29112DD0B FB 01 01FD FF FF
2DD0C10FFBF FE 01 01 01FE 19 B4 54

每个位元范围按字典顺序排序,但不包括以下十三个字节值00 07 08 09 0A 0B 0C 0D 0E 0F 1A 1B 20。例如,差值1156B 的編碼,其字節序FC 06 FF。紧接着差值1156C 的編碼,是字节序列FC 10 01 (第三個字節,FF 跳過00 01,而第二個字節,06 跳過07 08 09 0A 0B 0C 0D 0E 0F 10)。

除了空格U+0020為例外,對所有ASCII字符U+0000U+007F,编码器會重置为U+0040。由於上述的按原样包含了行尾码位U+000DU+000A (0D 0A ),因此编码器在每行的开头处于已知状态。因此,单个字节的损坏最多影响一行。相比之下,UTF-8单个字节的损坏最多影响一个字符,对于SCSU来说,則可能會影响整个文档。

對於没有上述值的文本,BOCU-1亦提供了类似的穩健性,带有特殊的重置代码0xFF。当解码器找到这个八位字节时,它会将其状态重置为U+0040就像行尾一样。BOCU-1规范中不推荐使用0xFF复位字节,因为它与其他BOCU-1设计目标相冲突,尤其是二进制顺序

在BOCU-1编码文本的开始处,可選擇地使用签名U+FEFF,其字節串列FB EE 28,會将初始状态由U+0040改U+FEC0。换句话说,無法像其他大多數的統一碼编码方案一样简单地剥离簽名。若額外添加一個復位字節,使之成為字節順序FB EE 28 FF,則可以避免这种影响,但BOCU-1规范不推荐这种做法。

理论上,UTF-1UTF-8可以為原始UCS-4集(使用 31 位元、上到7FFFFFFF)編碼。BOCU-1和UTF-16可以為現代統一碼集(U+0000U+10FFFF)。排除 13 個受保護碼位外,BOCU-1单个位元組可以 多字节编码。BOCU-1最多需要四个位元組,包括一个前导字元和一到三个尾端位元組。尾字节编码剩余的“243”(基数 243)差,前导字节确定尾字节数和初始差。请注意,复位字节0xFF不受保护,可以作为尾字节出现。

专利 编辑

在美国专利#6,737,994中,涵盖了通用BOCU算法,同時还提到了特定的BOCU-1实现[4] IBM當時雇用了BOCU-1的两位发明者,在統一碼技术说明中指出「完全兼容的BOCU-1版本」的实现者必须联系 IBM 以申请免版税许可[5]BOCU-1是統一碼网站上,目前唯一已知的受到知识产权限制的統一碼压缩方案。

相比之下,IBM也為UTF-EBCDIC申請专利,但它选择使文档和编码方案不要求對實施者申請許可證,而是「任何将轉換格式成为UCS标准的一部分,將對他們們免费提供」[6]

参考 编辑

  1. ^ About Unicode Terminology. unicode.org. [2021-12-10]. (原始内容于2021-04-21). 
  2. ^ 2.0 2.1 Markus Scherer, Mark Davis. UTN #6: BOCU-1: MIME-COMPATIBLE UNICODE COMPRESSION. 2006-02-04 [2008-05-18]. (原始内容于2021-12-08). 
  3. ^ IANA 中BOCU-1的註冊記錄. [2021-11-16]. (原始内容于2020-08-11). 
  4. ^ Davis. United States Patent #6,737,994, "Binary-ordered compression for unicode". 2004-05-18 [2008-11-16]. (原始内容于2019-04-15).  无效|subscription=etal (帮助)
  5. ^ Markus Scherer, Mark Davis. UTN #6: BOCU-1. 2006-02-04 [2014-02-05]. (原始内容于2021-12-08). 
  6. ^ V.S. Umamaheswaran. UTR #16: UTF-EBCDIC. 2002-04-16 [2008-11-16]. (原始内容于2022-01-30). 

另見 编辑

  • UTF-1:包含 UTF-1、UTF-8和BOCU-1设计的比较
  • International Components for Unicode:一个可以在BOCU-1和其他Unicode编码之间转换的库

統一碼二進制有序壓縮, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目包含過多行話或專業術語, 可能需要簡化或提出進一步解釋, 2021年11月17日, 請在討論頁中發表對於本議題的看法, 並移除或解釋本條目中的行話, 此條目需要精通或熟悉字符编码的编者参与及协助编辑, 2021年11月17日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 另見其他需要字符编码專家關注的頁面, 英語, binary, ordered, compression, unicode, 縮寫, . 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目包含過多行話或專業術語 可能需要簡化或提出進一步解釋 2021年11月17日 請在討論頁中發表對於本議題的看法 並移除或解釋本條目中的行話 此條目需要精通或熟悉字符编码的编者参与及协助编辑 2021年11月17日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 另見其他需要字符编码專家關注的頁面 統一碼二進制有序壓縮 1 英語 Binary Ordered Compression for Unicode 縮寫 BOCU 是統一碼技術注解文件所定義的規範 2 可以兼容MIME的統一碼压缩方案 雖然UTF 8適合廣泛使用 但對於非拉丁文和中日韓統一表意文字的文字 相較於代码页技術 它佔用了更多的空間 較高的 字節 碼位 之比 另一方面 SCSU 佔用的空間與代碼頁差不多 但卻不相容於MIME 二進制有序壓縮則结合了UTF 8的廣泛適用性和統一碼標準壓縮方案 SCSU 的紧凑性 2 这种编码旨在用于压缩短字符串 并保持码点顺序 BOCU 1是IANA注册的字符集 3 目录 1 细节 2 专利 3 参考 4 另見细节 编辑本章節中使用的數字都是十六進制 且使用的範圍都是包含在内 統一碼二進位有序壓縮的核心概念在於 同一種語言的字符 通常被放在鄰近位置 同一區段內 所以文件中的一個字符與前一個字符碼值的差值是小的 可以用較少的字節來編碼 而實際作法上 不是直接使用前一個字符的碼值 而是前一固字符歸一化的碼值 即所在區段的中間值 其對應如下 編碼范围 歸一化碼值 笔记U 3040至U 309F U 3070 平假名U 4E00至U 9FA5 U 7711 中日韓統一表意文字U AC00至U D7A3 U C1D1 韩文U 0020 编码器状态保持原样 空格U i hhhh i 00 U i hhhh i 7F 不包括上述范围 U hhhh40 中间共128个U i hhhh i 80 U i hhhh i FF 不包括上述范围 U i hhhh i C0 中间共128个此壓縮法的規則為 码位U 0020使用其原本的值 其他码位 即U 0021到U D7FF和U E000到U 10FFFF 則計算其與前一個字符的歸一化版本的碼值差值 並對此差值編碼 差值的編碼規則如下 差值範圍 字节序列范围 见下文 10FF9F到 2DD0D 21 F0 58 D9到21 FF FF FF 2DD0C到 2912 22 01 01到24 FF FF 2911至 41 25 01至4F FF 40至3F 50到CF40至2910 D0 01到FA FF2911至2DD0B FB 01 01到FD FF FF2DD0C至10FFBF FE 01 01 01至FE 19 B4 54每个位元范围按字典顺序排序 但不包括以下十三个字节值00 07 08 09 0A 0B 0C 0D 0E 0F 1A 1B 20 例如 差值1156B 的編碼 其字節序FC 06 FF 紧接着差值1156C 的編碼 是字节序列FC 10 01 第三個字節 FF 跳過00 01 而第二個字節 06 跳過07 08 09 0A 0B 0C 0D 0E 0F 10 除了空格U 0020為例外 對所有ASCII字符U 0000到U 007F 编码器會重置为U 0040 由於上述的按原样包含了行尾码位U 000D和U 000A 0D 0A 因此编码器在每行的开头处于已知状态 因此 单个字节的损坏最多影响一行 相比之下 UTF 8单个字节的损坏最多影响一个字符 对于SCSU来说 則可能會影响整个文档 對於没有上述值的文本 BOCU 1亦提供了类似的穩健性 带有特殊的重置代码0xFF 当解码器找到这个八位字节时 它会将其状态重置为U 0040就像行尾一样 BOCU 1规范中不推荐使用0xFF复位字节 因为它与其他BOCU 1设计目标相冲突 尤其是二进制顺序 在BOCU 1编码文本的开始处 可選擇地使用签名U FEFF 其字節串列FB EE 28 會将初始状态由U 0040改为U FEC0 换句话说 無法像其他大多數的統一碼编码方案一样简单地剥离簽名 若額外添加一個復位字節 使之成為字節順序FB EE 28 FF 則可以避免这种影响 但BOCU 1规范不推荐这种做法 理论上 UTF 1和UTF 8可以為原始UCS 4集 使用 31 位元 上到7FFFFFFF 編碼 BOCU 1和UTF 16可以為現代統一碼集 U 0000到U 10FFFF 排除 13 個受保護碼位外 BOCU 1单个位元組可以256 13 243 displaystyle 256 13 243 nbsp 多字节编码 BOCU 1最多需要四个位元組 包括一个前导字元和一到三个尾端位元組 尾字节编码剩余的 模243 基数 243 差 前导字节确定尾字节数和初始差 请注意 复位字节0xFF不受保护 可以作为尾字节出现 专利 编辑在美国专利 6 737 994中 涵盖了通用BOCU算法 同時还提到了特定的BOCU 1实现 4 IBM當時雇用了BOCU 1的两位发明者 在統一碼技术说明中指出 完全兼容的BOCU 1版本 的实现者必须联系 IBM 以申请免版税许可 5 BOCU 1是統一碼网站上 目前唯一已知的受到知识产权限制的統一碼压缩方案 相比之下 IBM也為UTF EBCDIC申請专利 但它选择使文档和编码方案不要求對實施者申請許可證 而是 任何将轉換格式成为UCS标准的一部分 將對他們們免费提供 6 参考 编辑 About Unicode Terminology unicode org 2021 12 10 原始内容存档于2021 04 21 2 0 2 1 Markus Scherer Mark Davis UTN 6 BOCU 1 MIME COMPATIBLE UNICODE COMPRESSION 2006 02 04 2008 05 18 原始内容存档于2021 12 08 IANA 中BOCU 1的註冊記錄 2021 11 16 原始内容存档于2020 08 11 Davis United States Patent 6 737 994 Binary ordered compression for unicode 2004 05 18 2008 11 16 原始内容存档于2019 04 15 无效 subscription etal 帮助 Markus Scherer Mark Davis UTN 6 BOCU 1 2006 02 04 2014 02 05 原始内容存档于2021 12 08 V S Umamaheswaran UTR 16 UTF EBCDIC 2002 04 16 2008 11 16 原始内容存档于2022 01 30 另見 编辑UTF 1 包含 UTF 1 UTF 8和BOCU 1设计的比较 International Components for Unicode 一个可以在BOCU 1和其他Unicode编码之间转换的库 取自 https zh wikipedia org w index php title 統一碼二進制有序壓縮 amp oldid 78427985, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。