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