UTF-7

来自GSXAB的知识库
UTF-7
术语名称 UTF-7
英语名称 UTF-7

UTF-7 是一个将 Unicode 字符集编码为 ASCII 字符流的字符编码方法。该方法已过时。 UTF 即 Unicode Transformation Format , Unicode 传输格式。但是在严格含义上, UTF 需要能够编码全部 Unicode 码位, UTF-7 的部分实现只能表示其中的 BMP ,因此不严格算是一种 UTF 。

UTF-7 编码受此在 RFC 1642 中作为实验性协议提出,并随后被 RFC 2152 标记为过时。这一编码从未被视为 Unicode 联盟的官方标准。而且目前这一编码已发现具有安全性问题,因此现今大多数软件禁止使用, HTML5 中也已禁止使用这一编码。

编码规则

在 UTF-7 中,文本中的字符被分为两类。一类包括 62 个对应数字和 ISO 基本拉丁字母的字符,以及 ' ( ) , - . / : ? 等字符,这些字符的含义不会修改,可以安全地直接使用。第二类是其他字符,需要进行转义。首先是加号 + 需要被转义为 +- ,其他字符则考虑连续的字符串,首先使用 UTF-16 编码,也就是说将 U+0000-FFFF 用双字节编码,然后 U+10000-10FFFF 被表达为一对代理对,然后将其使用不带有填充字符的 base64 编码,并使用 +- 括起来。

比如:

  • Hello, World! 编码为 Hello, World+ACE-
  • 1 + 1 = 2 编码为 1 +- 1 +AD0- 2

BOM

带有 BOM 字符的 UTF-7 总是会把 BOM 编码为 0x2B.2F.76 +/v 开头的内容,可以用于判定编码(不过 UTF-7 是单字节编码,不需要判断字节序)。


常见字符集字符编码
原始编码 电报码( Morse 电码 BCD 码IBM 卡编码 -
早期二进制码位分配的编码 - BCDICEBCDIC ASCIIISO 646-US 、 ISO 646-IRV)
地区字符编码 - - ISO 8859 : ISO 8859-1 、 ISO 8859-2 、……
- - EUC 类编码,含第一个国标字符集 GB 2312
其编码 EUC-CNIBM 代码页 936)也称 GB 2312
多地区字符编码通过切换串兼容 - - 通用框架: ISO 4873ISO 2022 ,含 ISO-2022-CN
ISO-2022-CN 的简化: HZ 编码
无需切换串的自同步编码 - UTF-EDCBIC 字符集 Unicode / ISO 10646 ,有常见编码 UTF-8UTF-16UTF-32 及废弃编码 UTF-1UTF-7
地区字符编码扩充 - - 国标系列后续:GBK微软代码页 936)、 GB 18030微软代码页 54936

参考资料

https://en.wikipedia.org/wiki/UTF-7