遭遇UTF-7

我只知道UTF-8和GB2312编码,这是网页中常用的编码.今天在将Sony EricssonT618手机中的电话号码备份时,居然碰到了UTF-7编码.
  过程是这样的:我将电话簿用蓝牙发送到笔记本电脑中,得到一个42KB的名为Whole Phonebook.vcf文件.双击一下,结果导到groupwise的地址簿中了,导进去了还了还好,可是导进去后看不到名字,只能看到一些VGhTTlFJ和n5pe+lb9这样的名字,电话号码都不在了。我改用记事本打开,原来这只是一个ANSI的文本文件:

引用自
BEGIN:VCARD
VERSION:2.1
N:Zola;
TEL;HOME:+85298515555
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:Yo;
TEL;HOME:+8613555555542
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:+nsSUaw-;
TEL;HOME:13777778890
END:VCARD
BEGIN:VCARD
VERSION:2.1
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:+n5pe+lb9-;
TEL;HOME:1365094444
END:VCARD

但是,这样,我还是看不到我存在电话本里的中文名字。难道CHARSET=UTF-7:后面的+n5pe+lb9-就是用UTF-7编码后的中文名?
我又用改charset笨办法:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-7" />
<title>UTF-7 Encoding</title>
</head><body>
BEGIN:VCARD
VERSION:2.1
N:Zola;
TEL;HOME:+85298515555
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:Yo;
TEL;HOME:+8613555555542
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:+mthc8A-;
TEL;HOME:13777778890
END:VCARD
BEGIN:VCARD
VERSION:2.1
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:+n5pe+lb9-;
TEL;HOME:1365094444
END:VCARD
</body></html>

  我将上面的代码另存为encode.htm,然后用浏览器打开,好了,那些电话号码的名字被翻译成中文了:

??? BEGIN:VCARD VERSION:2.1 N:Zola; TEL;HOME:??鵹 END:VCARD BEGIN:VCARD VERSION:2.1 N:Yo; TEL;HOME:?矧鹹 END:VCARD BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-7:高峰; TEL;HOME:13777778890 END:VCARD BEGIN:VCARD VERSION:2.1 BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-7:龚建国; TEL;HOME:1365094444 END:VCARD

  中文名字总算是翻译过来了。不过还是有些一乱码在里面。那些乱码,是因为UTF-7的编码是以+号开头号结尾的,结果浏览器把+85298515555解析成乱码了。

引用自 乱码大全
UTF-7:A Mail-Safe Transformation Format of Unicode(RFC1642)。这是一种使用 7 位 ASCII 码对 Unicode 码进行转换的编码。它的设计目的仍然是为了在只能传递 7 为编码的邮件网关中传递信息。 UTF-7 对英语字母、数字和常见符号直接显示,而对其他符号用修正的 Base64 编码。符号 + 和 – 号控制编码过程的开始和暂停。所以乱码中如果夹有英文单词,并且相伴有 + 号和 – 号,这就有可能是 UTF-7 编码。

  后来,上网搜索了一个软件叫MView Convert来转换编码,它也会将没有-号结尾的的字符串当成UTF-7编码来解析。我只好把+86全部改为0086,这样就避免了乱码。写乱码大全的bluesea真是个牛人。 [lol]
  对了,如果手机中的电话号码设置了来电大头像的话,那个图片会以BASE64编码存在于Whole Phonebook.vcf中,里面将含有这样的一段开头的内容:PHOTO;ENCODING=BASE64;TYPE=JPEG:,如果不含图片内容的编码的话,我的电话簿不会有42KB之巨。 [razz]

5 thoughts on “遭遇UTF-7”

  1. 我靠,我能问问你是什么手机嘛?第一次看到这种编码。如果是主流手机,那么365kit.com就必须支持这种编码,天啊!!

  2. 呵呵,再TO一下 virushuo:
    他用的是SE T618,在文中说过了哦

    不过现在也有直接导成.txt文档的机子,
    不过我的不是,我的是S6.0的自己的格式的。
    嘻嘻

  3. 很不错,我也遇到类似麻烦。。
    后来尝试用word打开,默认选择UTF-7码,可以读取,呵呵。。。
    只是用outlook还是无法正常使用。。。呵呵

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据