UTF-7

✍ dations ◷ 2025-09-14 14:25:45 #UTF-7

UTF-7(全称:7比特Unicode转换格式)是一种可变长度字符编码方式,用以将Unicode字符以ASCII编码的字符串来呈现,可以应用在电子邮件传输之类的应用。

SMTP为基本的电子邮件传输标准之一,其指明了传输格式为US-ASCII,并且不允许超过ASCII所定义的字符范围以外的比特值,也就是说八比特的字符串将无法正常的被传输。MIME(RFC 2045 ~ 2049)扩展了网络邮件以支持不同的媒体类型以及字符集,包含UTF-8与UTF-16的字符集皆可被指定使用。但由于MIME并未明确将Unicode定义为可支持的字符集,并且也没有说明其应如何编码,这使得既有的SMTP传输架构下仍旧无法保证可正确的处理8位资料。base64编码也有其问题,例如甚至连纯英文的US-ASCII字符也可能会变成不可辨认;至于像是UTF-8与quoted-printable的编码结合,则需要6~9个比特来为非ASCII的字符(Unicode的基本多文种平面中定义的字符)进行编码,至于在基本多文种平面(BMP)以外的字原则需要多达12位的长度才能完成编码。

UTF-7首次被提出是在一个实验性的通信协议里(RFC 1642,A Mail-Safe Transformation Format of Unicode),这份RFC(Request for Comments)提案后来因RFC 2152的提出而被取代(RFC 2152本身为新闻型(informational)的文案)。在RFC 2152当中明确的指出该份RFC本身不为互联网的标准做出任何明确的定义(明列于文案前头的Status of this Memo)。尽管这份RFC 2152在IANA(Internet Assigned Numbers Authority)的字符集列表里被引述为UTF-7,然而UTF-7本身并非Unicode的标准之一,即使在目前最新的Unicode 5.0里也仅列出UTF-8、UTF-16和UTF-32。

如同引言所提到的,由于在过去SMTP的传输仅能接受7比特的字符,而当时Unicode并无法直接满足既有的SMTP传输限制,在这样地背景下UTF-7被提出。严格来说UTF-7不能算是Unicode所定义的字符集之一,较精确的来说,UTF-7是提供了一种将Unicode转换为7比特US-ASCII字符的转换方式。

有些字符本身可以直接以单一的ASCII字符来呈现。第一个组群被称作“direct characters”,其中包含了62个数字与英文字母,以及包含了九个符号字符:' ( ) , - . / : ?。这些“direct characters”被认为可以很安全的直接在文件里呈现。另一个主要的组群称作“optional direct characters”,其中包含了所有可被打印的字符,这些字符在U+0020~U+007E之间,除了~ +和空白字符以外。这些“optional direct characters”的使用虽可减少空间的使用也可增加人的可阅读性,但却会因为一些不良设计的邮件网关而会产生一些错误,导致必须使用额外的转义字符。

空白字符、Tab字符、以及换行字符一般虽也可直接是为单一的ASCII字符来使用,然而,若是邮件中有使用了编码过的字符串,则必须特别注意这些字符有无被使用在其他地方。而加号字符+的一种编码方式是+-

其他的字符则必须被编码成UTF-16然后转换为修改的Base64。这些区块的开头会以+符号来标示,结尾则以任何不在Base64里定义的字符来标示。若是在Base64区块之后使用-(连字暨减号)标示为结束的话,则解码器会从下个字符继续解码,反之则用此字符当非Base64的区块的开头继续解码。

首先必须先决定哪些字符呈现为ASCII格式,哪些字符呈现在Unicode区块。简单的编码器可以假设所有的字符皆可以很安全的被直接编码。然而要将原本属于Unicode区块的字符视为ASCII来加以编码的代价是需要额外的2⅔字符。

Unicode序列一旦被认定后,其必须以下面的程序来加以编码,并以适当的符号加以标注:

我们将使用£† (0x00A3) (0x2020)字符序列来作为以下的示例。

首先消息必须被拆分到纯文字与Unicode区块,紧接着Unicode区块必须以下面的程序来进行解译(使用上面提到的示例):

UTF-7由于允许将相同来源的字符串从base64的模式被平移,而显得安全性薄弱。现今的邮件与传输方式由于都已支持UTF-8,UTF-7则已走入历史而很少再被使用。即便如此,现今的应用软件仍应更加考量支持更安全的编码方式。

然而,除了邮件传输之外,仍有不少传输是采用UTF-7编码来进行传输。近期较著名的安全漏洞发生于Google的搜索漏洞,该漏洞肇因于不当的使用UTF-7编码于网址信息上,远程的攻击将可读取或修改网页内容。

有些可应用于电信电报领域的UTF-6和UTF-5提案已经被提出,然而,截至2006年止,这些提案尚未被正式的制定出来。

这些提案与Punycode并无相关。

相关

  • AAT艺术与建筑索引典(英语:Art & Architecture Thesaurus,AAT)是一个用来描述关于艺术、建筑和物质文化项目的受控词表。AAT收录各种通用术语,如“大教堂”,但不收录专有名词,如“圣母
  • 类器官类器官是原生动物所具有的一种特殊结构,负责执行类似高等动物器官的功能,也有人将其归入细胞器。类器官也可是一种科学研究技术,指一些细胞的培养物,能够包含其代表器官的一些关
  • 贝叶氏谱系分析贝叶氏谱系分析(Bayesian inference of phylogeny)是根据已知的先验几率推导后验几率的似然函数,进而去预测最可能的系谱树。随着电脑计算速度的演进以及马尔科夫-蒙特卡洛法的
  • 联邦众议院多数党(232)少数党(198)空缺(5)美利坚合众国众议院(英语:United States House of Representatives)为美国国会两院之一,另一院为参议院(上议院)。众议院是美国的下议院,美国各州在众议院
  • 051型导弹驱逐舰三联装“海鹰-1”反舰导弹×2 76式双联装130毫米口径舰炮×2 76式双管37毫米舰炮×4 61式双联装25毫米高射炮×4 12管反潜火箭深弹发射装置×2 64式深弹发射装置×4051型驱
  • 茨维瑟尔山 (基姆高山脉)坐标:47°45′21″N 12°48′43″E / 47.75583°N 12.81194°E / 47.75583; 12.81194茨维瑟尔山(德语:Zwiesel),是德国的山峰,位于该国南部,由巴伐利亚负责管辖,属于基姆高山脉的一
  • 班迪亚班迪亚(Bandia),是印度北阿坎德邦Udham Singh Nagar县的一个城镇。总人口8897(2001年)。该地2001年总人口8897人,其中男性5007人,女性3890人;0—6岁人口1200人,其中男610人,女590人;识
  • 小久保裕纪教练时期小久保裕纪(日语:小久保 裕紀/こくぼ ひろき ,1971年10月8日-)是一名出生于日本和歌山县和歌山市的棒球选手,司职一军首席教练,目前效力于日本职棒福冈软银鹰。1971年出生
  • 采西斯采西斯(拉脱维亚语:Cēsis,德语:Wenden,立窝尼亚语:Venden,爱沙尼亚语:Võnnu,波兰语:Kieś),位于拉脱维亚中北部的维泽梅高地(英语:Vidzeme Upland)北部的高亚河河谷,是采西斯市镇的行政中心。是2014年欧洲文化之都的候选城市。(当年同为拉脱维亚城市的里加当选。)十一世纪,一支叫温迪的部落来到并定居在这里,建造了一个山地木制防御城堡。现在,木制城堡的遗迹仍保留在城堡公园中,包括一个18米高的土质高台和部分防御工事的遗迹。1206年,温迪皈依基督教,这里成为利沃尼亚的
  • 2016年塞浦路斯议会选举扬纳基斯·奥米鲁(英语:Yiannakis Omirou)社会民主运动迪米特里斯·席洛瑞斯(希腊语:Δημήτρης Συλλούρης)团结运动(英语:Solidarity Movement (Cyprus))2016年塞浦路斯议会选举于2016年5月22日举行,改选塞浦路斯众议院80席中56席。选举之前数月,前民主大会党欧洲议会议员叶莱妮·菲路卡路丝(英语:Eleni Theocharous)建立分裂政党,取名为团结运动(希腊语:Κίνημα Αλληλεγγύη),以反对尼科斯·阿纳斯塔夏季斯处理塞