UTF-7 编码和解码规则

来源:未知 责任编辑:责任编辑 发表时间:2013-12-01 14:20 点击:

 
 
作者:[肖允锋]

MIME(Multipurpose Internet Mail Extensions) 中没有将 Unicode 定义为一种许可的字符集,也没有规定其如何编码。虽然已有其他的一些编码格式(如:UTF-8)应用于邮件当中,但它们使用了128到255之间的数值去表示 Unicode 字符,这对于非 US-ASCII 的字符集的编解码是不利的。
因为很多邮件网关和系统无法正确地提交八位的 US-ASCII 码,这样使用扩展的 US-ASCII 的字符将出现丢失位(bit)的情况。由于 UTF-7 只使用 7 位(bit),最高位不使用,因此 UTF-7 编码能够完整的在这些系统中进行传输。
对于部分US-ASCII 字符和 US-ASCII 以外的字符,UTF-7 采用变字节顺序的方法进行解码,并使用 US-ASCII 中的保留字符作为转换字符(shift character)。以下是 UTF-7 编码和解码规则的说明。

UTF-7 将 Unicode 字符分为三种进行处理:

1. 直接进行编码的字符,即直接使用 US-ASCII 作为编码的字符。这类字符包括大小写字母、数字字符、以及下列字符。(注意不包含字符 + )
‘ ( ) , – . / : ? 。
2. 可选择的直接进行编码的字符。(注意不包含字符 和字符 ~)
! ” # $ % & * ; < = > @ [ ] ^ _ ‘ { | }
3. 除1、2两种字符以外的 Unicode字符。

UTF-7 的编码规则

1. (direct encoding) 对于第一类字符,直接使用 US-ASCII 进行编码,对于第二类字符,则可选择的使用 US-ASCII 或变字节顺序的方法进行编码。但要注意,在邮件头中,若直接对第二类字符使用 US-ASCII 进行编码,可能会出现某些网关无法正确读取的现象。
2. (Unicode shifted encoding) 除字符 “+” 和第一、二类两种字符以外字符需采用变字节顺序的方法进行解码,使用符号 “+” 控制编码过程的开始,直到遇到回车,换行字符或文末则结束,并使用 “-” 控制编码过程的结束。在 “+” 与 “-” 的编码采用修正的 Base64 编码表示。
例如: 字符串”A≠Α”(Unicode: 0041 2260 0391)的编码为:A+ImADkQ-(ASCII: 41 2B 49 6D 41 44 6B 51 2D)
3. 特殊字符 “+” 的编码为2B2D(H)。当出现着编码为2B2D(H),即”+-”的特殊情况时,直接则认定 2D(H) 无效,并予以忽略。因此2B2D(H)编码,解码得到的字符串为”+”,而不是”+-”。对于编码2B2D2D(H),解码得到的字符串才是”+-”。
4. 空格(dec 32), 跳格(dec 9), 回车(dec 13)和换行(dec 10),直接使用 US-ASCII 进行编码。

修正的 Base64 编码的计算

将字符的 Unicode big endian 编码分成两个字节看待,然后计算字符的 Base64 编码,但不使用 “=” 进行补位。

 

 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • dos命令原来也能这样用?允许查找未知子目录指定文件
    •  windows的磁盘操作之八——格式化分区的思考
    • windows篇-第三章 安装和配置DNS服务器
    • windows篇-第二章 安装和配置Web服务器
    • windows篇-第一章 windows server 2008安装和简单配置
    •  windows server 2003断开远程之后自动注销用户
    • Windows服务器下用IIS Rewrite组件为IIS设置伪静态方法
    • Windows 2008 R2 SP1部署WSUS 3.0 SP2
    • Windows 7秘籍揭秘:用“手”写公式

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1