邮件乱码破解完全手册(下) 袁宁 2000年 第53期 #1 4.解决UTF-7“乱码”的方法 方法1:将UTF-7“乱码”邮件转寄到自己的一个邮箱中,然后在OutLook Express中单击菜单栏“查看”/“编码”/“Unicode(UTF-7)”(如若第一次使用该项,需在“其它”中找)即可看到解码后的内容。 方法2:如果邮件是别人转发过来的,或者邮件使用的是附件方式,你可将其保存后再用OutLook Express打开查看。必要时也可以剪贴下来,再加上如下信头: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-7" Content-Transfer-Encoding: 7bit 保存为.eml的文本文件后用OutLook Express解码查看,同样需要单击菜单栏“查看”/“编码”/“Unicode(UTF-7)”。 方法3:将UTF-7“乱码”邮件存为一个.txt的文本文件,并改文件名后缀为.uue,然后使用Winzip来解码。如果不行,还可在这个文本文件的邮件信头处添加如下几行: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-7" Content-Transfer-Encoding: 7bit 要注意信头中间不要空行,信头和信体之间要留有一个空行(即在“Content-Transfer-Encoding: 7bit”下要留有一行空行)。这样形成的文件名后缀依然要改为.uue,然后用Winzip打开,信体一般就会被正确解码。 #1 5.解决UTF-8“乱码”的方法 方法1:将UTF-8“乱码”邮件转寄到自己的一个邮箱中,然后在OutLook Express中单击菜单栏“查看”/“编码”/“Unicode(UTF-8)”(如若第一次使用该项,需在“其它”中找)即可看到解码后的内容。 方法2:如果邮件是别人转发过来的,或者邮件使用的是附件方式,你可将其保存后再用OutLook Express打开查看。必要时也可以剪贴下来,再加上如下信头: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit 保存为.eml的文本文件后用OutLook Express解码查看,同样需要单击菜单栏“查看”/“编码”/“Unicode(UTF-8)”。 方法3:将UTF-8“乱码”邮件存为一个.txt的文本文件,并改文件名后缀为.uue,然后使用Winzip来解码。如果不行,还可在这个文本文件的邮件信头处添加如下几行: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit 要注意信头中间不要空行,信头和信体之间要留有一个空行(即在“Content-Transfer-Encoding: 8bit”下要留有一行空行)。这样形成的文件名后缀依然要改为.uue,然后用Winzip打开,信体一般就会被正确解码。 #1 6.解决HZ“乱码”的方法 方法1:将HZ“乱码”邮件转寄到自己的一个邮箱中,然后在OutLook Express中单击菜单栏“查看”/“编码”/“简体中文(HZ)”,即可看到解码后的内容。 方法2:将HZ“乱码”邮件存为一个.txt的文本文件,将文件名后缀改为.eml,由OutLook Express打开,并单击菜单栏“查看”/“编码”/“简体中文(HZ)”即可看到解码的内容。如果邮件使用的是附件方式,则可将附件保存后再用OutLook Express打开查看。必要时也可以剪贴下来,再加上如下信头: Mime-Version: 1.0 Content-Type: text/plain; charset="hz-gb-2312" Content-Transfer-Encoding: quoted-printable 保存为.eml的文本文件后用OutLook Express解码查看。 方法3:将HZ“乱码”邮件存为一个.txt的文本文件,并改文件名后缀为.uue,然后使用Winzip来解码。如果不行,还可在这个文本文件的邮件信头处添加如下几行: Mime-Version: 1.0 Content-Type: text/plain; charset="hz-gb-2312" Content-Transfer-Encoding: quoted-printable 特别要注意的是信头中间不要空行,信头和信体之间却要留有一个空行(即在“Content-Transfer-Encoding: quoted-printable ”下要留有一行空行)。这样形成的文件名后缀依然要改为.uue,然后用Winzip打开,信体一般就会被正确解码。 特别提示:通过对上面六类乱码的解决,我们能够看出对于UU编码和MIME类的乱码,一般可以有三种方法解决,第一种是通过转寄乱码邮件(有的情况下可以不用转寄)后用支持该编码的电子邮件软件来接收、查看;第二种是将乱码邮件存为以.eml为后缀名的文本文件,然后用OutLook Express解码查看;第三种则是将乱码邮件存为以.uue为后缀名的文本文件,然后用Winzip解码查看,如果这两种方式没有能够直接解码成功,则一般可以通过添加信头来解决。对于各种不同类型的乱码,它们要添加的信头仅仅在于字符集charset和内容传输编码方式Content-Transfer-Encoding有区别。另外,对于Uuencode编码和Base64乱码,还有第四种方法,就是用Windows下的Wincode程序来解码阅读。 #1 7.解决半个汉字“乱码”的方法 对于半个汉字乱码,只要将“乱码”邮件存为一个.txt文本文件,然后使用以字符为单位的编辑软件,将“乱码”行的首字符删除,后面的部分就会和相邻的“乱码”重新组合成可识别的汉字。这样虽然会丢失前面一个(或几个)汉字,但能挽救、还原大部分汉字,有时候就足够猜测出邮件的原意了。 #1  8.解决Big5码和其它(如其它语言内码)“乱码”的方法 对于这些乱码邮件,除了可以在Outlook Express中单击菜单栏“查看”/“编码”选项,并选中“简体中文(GB2312)”编码方式查看外,还可以用一些支持多种编码的中文系统,如中文之星、Richwin、南极星等转换平台,并在其中选择GB2312码,一般就可以正常显示邮件为简体中文了。 #1 9.解决BINHEX“乱码”的方法 这里还想对BINHEX“乱码”作一不完全的解法介绍,虽然它极为少见,但如果你不幸碰上,还是可以用下面的方法试一试: 方法1:对于由BINHEX编码产生的乱码邮件,用Eudora来查看它。 方法2:用一个专门解读BINHEX编码的程序Binhex3.exe(共享软件,在许多FTP站点都能找到)来打开阅读。 方法3:将Base64 encode“乱码”邮件存为一个.txt的文本文件,然后在Windows下用Wincode程序解码。 #1 四、乱码转换之简单装备篇 #1 1.乱码察看器(CodeView) 版本:2.50   软件大小:293KB   发布日期:2000/8   软件类型:免费软件   使用平台:Windows95/98/ME/NT/2000   下载地点:http://topsoft.163.com/software/download.php?id=3597 功能等级:★★★★ 乱码察看器,顾名思义就是用来察看各种乱码的一个小工具软件。它目前支持Uuencode编码、Base64编码、Quoted-Printable编码和HZ编码四种单一形式的编码和解码以及Base64、Quoted-Printable和HZ编码三种的混合形式的乱码察看。除此之外,还提供了对Big5码的支持,可以在Big5码和GB码之间自由转换(也可以让程序自动识别并将Big5码转换成GB码),所以应该算是同类软件中功能较为齐全的软件了(特别是可以在Win2000下使用)。 乱码察看器的界面不算很漂亮(如^53200027a^1),但操作起来很简单,一般有两种使用方法:一种是在有乱码的窗口中直接按下单键解码热键(默认为F7),此时如果窗口中的乱码能被识别,就会出现一个窗口覆盖掉当前的乱码窗口,我们可以直接在这个窗口中阅解码后的内容。作者建议你在大多数情况下都使用这种方式;第二种方法是将乱码内容通过剪贴板复制到乱码察看器的源窗口中,然后手工尝试用不同的解码方式进行解码,可以看到这种解码方法将提供给你更多的选择自由,并且可以使用一些在单键解码中无法实现的解码方式,如通过“其他方式解码”解决由于字节高位被屏蔽而形成的死乱码和通过“UUCode”解开Uuencode解码等。对于一些单键解码无法解决的乱码问题我们不妨使用此方式试试。 乱码察看器还有一个特色是提供了“剪贴板实时监视”、“混合乱码识别”和“智能弹出”功能(智能弹出功能采用混合编码的识别方法)。但是由于乱码的多样性,它识别混合编码的成功率并不是很高,甚至经常会出现一些原本正常的内容被识别错误的情况,这时你不妨将单一的乱码复制到剪贴板里(只复制乱码部分,而不要包含正常的文字),或者采用在乱码察看器中手动解码的方法来试试。另外,如果一些正常文本复制到剪贴板后,乱码察看器也会将它误识为乱码而自动弹出,这时建议你将其设置为“不要自动弹出”,可以避免一些不必要的麻烦。 总的说来,这款小软件对于解决常见的乱码还是比较有效的,特别是对于那些电脑初学者来说相当容易和轻松,可以省去不少的麻烦。它是绿色软件,无需安装,只要任意将其解压到一个目录中即可运行。 #1 2.邮件解码器(Mail Decoder) 版本:1.0   软件大小:686KB   发布日期:2000/6   软件类型:免费软件   使用平台:Windows95/98/ME/NT/2000   下载地点:http://netsurfe.e-lists.com.cn/download/decoder.exe 功能等级:★★★★☆ 邮件解码器也是一个类似于乱码察看器的小软件,但它能支持更多的编码格式,因此解乱码的成功率更高。它目前支持Base64编码、Quoted-Printable编码、HZ编码、UTF-7编码(->GB码、->Big5码)、UTF-8编码(->GB码、->Big5码),此外还支持GB码与 Big5码的相互转换。最难得的是此软件还提供了一个非常实用的功能——“7位-8位”,它使你能手动解除因部分邮件服务器不支持8位码而造成的邮件信息丢失的编码。 邮件解码器这个软件也不以界面见长,一眼看上去普普通通(如^53200027b^2),但使用起来一样非常简单。该解码器的内部提供了中文GB、BIG5和英文三种界面,如果你发现你的邮件解码器不是中文的,你可以单击菜单栏上左起第五个菜单(英文是Configuration),选中其中唯一的选项,在跳出的窗口中选择“中文界面(GB)”(如^53200027c^3),确定即可变为中文。在使用时,一般来说,你可以直接将邮件乱码文本拷贝到源文本框中,然后单击“解码”,找到对应的编码单击即可解码,此时你就可以直接在目标文本框中看到邮件的庐山真面目了。另外,解码的第二种方法允许你通过单击“文件”/“打开”调出你保存下来的乱码邮件文本在邮件解码器左栏中,然后同样单击“解码”在右栏中显示邮件。 除了上面所介绍的功能之外,你在邮件解码器中还可以单击“文件”/“解码文件按”,将你的邮件乱码文件保存为经某种编码解码后的文本文件;可以单击“文件”/“汉字内码转换器”,在GB码与Big5码之间任意相互转换(即使保存编码后的文件也行)。至于这个软件附加的其它一些功能,如提供邮件的删除、添加标志字符,换行等,操作起来也很简单,基本上没有什么难度。 总的来说,邮件解码器是个相当实用的解除邮件乱码的小工具,不仅操作简单,而且功能强大,能使大多数出现的乱码邮件恢复本来面目。 #1 3.Zeal Decoder 版本:1.0   软件大小:8K   发布日期:1998/8   软件类型:免费软件   使用平台:DOS/Windows9X   下载地点:http://www.nease.net/~zealsoft/zdecoder.zip 功能等级:★★★ 与前面介绍的两个软件不同,Zeal Decoder这个程序不是为解除大多数邮件乱码而设计的,而是专门针对一种编码设计的,目前它只处理Quoted-Printable编码的乱码邮件。 这个小软件个头奇小,加上说明文档还只有8K,显然不是windows下的程序。事实上它是一个DOS程序,但能在Windows下运行。其使用方法是在DOS窗口中输入命令,但不需要邮件信头就可以解码。它的命令行语法是这样的: zdecode [leading character] 如zdecode lm.txt lm.txt = 其中,infile表示输入文件名,outfile表示输出文件,leading character表示引导字符,它是可选项,绝大多数QP编码的乱码邮件都可以使用“=”等号作为引导字符(这是默认设置)。 如果某些QP编码的乱码邮件使用的引导字符不是“=”,而是“%”,则可以相应改变。 #1 4.Hzdecoder 版本:1.4 软件大小:171K 发布日期:2000/8 软件类型:免费软件 使用平台:Windows95/98/ME 下载地点:http://www4.netease.com/~lianghe/hzdecode.zip 功能等级:★★★ 这个小软件也是一个功能单一的邮件解码软件,它只能针对HZ编码的乱码邮件解码。如果你经常收到一些HZ编码的邮件(特别是在一些基于WEB方式的信箱中经常会出现这种乱码),则不妨试试它。 对于这个小软件的使用,也是非常简单,你只需将乱码的邮件粘贴到这个程序的编辑区它就可以自动显示出正常的中文来。除了解码外,Hzdecoder还能进行一些编码,如Quoted-Printable编码、Big5->GB码、GB码->Big5码等。 #1 五、乱码破解之流程篇 当你收到一封乱码邮件时,第一步必须要做的是根据乱码的特征判断它到底属于哪种编码,如果能判断出是哪种编码,最简单的方法当然是将乱码邮件剪贴下来,利用现成的乱码邮件解码软件(如乱码察看器或邮件解码器)来解码阅读或利用中文之星、Richwin、南极星这样的中文平台转换内码。但如果根据邮件的内容你一时判别不出是哪种编码,或者你没有任何现成的解码工具软件,则你可以如此一步一步的做下去(以Outlook Express 5为例): 步骤1:更改OE5设置。 启动Outlook Express,单击“工具”/“选项”命令,在出现的对话窗中单击“阅读”标签,再单击“字体”按钮,选择“简体中文(GB2312)”。并接下来将它设置为默认值,单击“国际设置”按钮,选中“为接收的所有的邮件使用默认的编码”,确定后退出。如此设置后,当你再打开邮件阅读时,通常就不会再出现乱码了。 步骤2:编码选项查看。 如果第一步没能奏效,你可以在Outlook Express中选定乱码邮件,然后单击“查看”/“编码”/“简体中文(GB2312)”或“其他”/“简体中文(HZ)”,看看邮件内容是不是能破解。 步骤3:转寄邮件后再收。 在第二步还不能奏效的情况下你可以将此邮件转寄到你的另一个邮箱中,然后再用Outlook Express接收,有时即可顺利解码。当然,也可以试着用不同的电子邮件软件接收此邮件,看看是否能消除乱码现象,因为不同的电子邮件软件对编码的兼容能力还是有所不同的。 步骤4:改名为.eml后重解。 如果仍然显示为乱码,你可以将乱码邮件存为一个.txt的文本文件(如果是通过WEB页收取的邮件,就将信体剪贴下来存为一个.txt的文本文件),并改其后缀名为.eml,由Outlook Express来打开,这样一般就可以自动解码了。 步骤5:添加信头后重读。 如果还不行,你可以接着在上面那个.eml文件的最前面添加如下信头: Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 特别要注意的是信头中间不要空行,信头和信体之间却要留有一个空行(即在“Content-Transfer-Encoding: base64”下要留有一行空行)。另外,如果不是Base64乱码,你需要判别它们是不是QP乱码或UTF-7、UTF-8乱码或HZ乱码,并分别将base64替换成quoted-printable、7bit、7bit、quoted-printable(后三种乱码还要将gb2312替换成utf-7、utf-8或hz-gb-2312)。完成保存后一般就可以用OutLook Express解码查看了。 步骤6:利用Winzip解码。 如问题仍得不到解决,可以将乱码邮件存为一个.txt的文本文件,并改其后缀名为.uue,然后调用WinZip来对乱码邮件进行解码。 步骤7:添加信头再用Winzip解码。 倘若解码无效,可以像在.eml文件中添加信头那样在.uue文件中添加信头,然后再用Winzip解码,相信绝大多数邮件乱码到这一步就会露出其“庐山真面目”了。 步骤8:字符重组。 对于利用上面步骤还不能正确解码的乱码邮件,你可以将其存为一个.txt文本文件,然后使用任意以字符为单位的编辑软件,将乱码行的第一个字符删除。看看后面的部分能不能和它相邻的乱码重新组成可识别的汉字。 步骤9:利用Wincode解码。 如果到这里都不能搞定乱码邮件,你只有借助Wincode了。将乱码邮件存为一个.txt的文本文件,然后在Windows下调用Wincode程序解码(Wincode程序支持UU编码、Base64编码和BINHEX等编码格式)。 步骤10:调用内码转换平台。 本来这个步骤应该早早在你判断出编码类型后就决定做不做的,但如果开始你判断失误,那么现在不妨回过头来全面的做一遍。调出你所有的平台转换工具,尝试尽可能全面的内码转换,看看能不能“死马当活马医”! 如果以上步骤均不能奏效,则可以判断收到的乱码邮件是未经过编码而造成第8位字节被滤掉的乱码邮件,一般来说,这只能通过编程来解决,但邮件解码器(Mail Decoder)这个软件中提供了“7位-8位”这个功能,所以如果你不擅长编程就只好求助于它了。另外,可以再提醒你的是,在Outlook Express 5中,你可以在选中乱码邮件后单击右键,在出现的快捷菜单中选择“属性”项,并在出现的对话框中单击“详细资料”标签,然后再单击右下方的“邮件的源文件(M)”,此时你就会看到邮件乱码的源文件。有时源文件就能显示出你想要得到的所有信息,即使没有的话,也能方便你将其存为.txt文本文件呀! 特别提示:邮件乱码破解的一个关键点是判别乱码的编码类型,因为不同编码的乱码,在不同的平台上有不同的解决方法,因此解码前如果能查看到乱码邮件的内容(可以利用源文件),再根据其特征对邮件可能的编码方式(Uuencode、Base64、QP或HZ等其它编码方式)进行判断将能使我们的破解工作事半功倍。 #1 六、乱码防范之日常措施篇 #1 1.选用大众流行的电子邮件软件   由于不同的电子邮件软件支持的编码有所不同,收件人和发件人自己定制的一些选项也各不相同,所以在收到编码过的邮件后,系统不一定就能识别出邮件所用过的编码方法。如果识别不出编码方法,则系统自然无法自动解码。这样当你查看邮件内容时,就会出现所谓的乱码而无法阅读。选用大众流行的电子邮件软件(如OutLook Express、Foxmail、Eudora和The Bat!等)可以在一定程度上避免这种尴尬的出现,因为这样的邮件软件一来用的人多,二来支持的协议一般来说也较多,所以出现无法自动解码的几率相对而言会小得多。除此之外,你还必须设置好你的电子邮件软件,特别是其默认的简体中文环境。现在有许多电子邮件软件允许你选择邮件的编码解码方式,你无论如何也要选择MIME,因为这是目前使用最广泛、支持率最高的协议。如果你的电子邮件软件连它都不支持,你应该考虑换一种软件了。 #1 2.最好不使用电子邮件软件特别的编辑功能 Outlook Express的邮件编辑器是个功能很强的HTML编辑器,你甚至可以编辑五颜六色、各种字体的电子邮件。然而,如果接收方不是也使用Outlook Express来接收邮件的话,可能就只能看到HTML源代码,这对于电脑初学者也许就意味着是“乱码”。不过也有解决的方法:在撰写邮件时,选择“格式”菜单下的“纯文本”选项。如果要将发送格式的缺省值设置为“纯文本”,那么在Outlook Express主窗口中,打开菜单栏“工具”/“选项”,并在出现的选项设置对话框中单击“发送”选项卡,将邮件发送格式设置为“纯文本”。 #1 3.最好用记事本撰写邮件内容后再插入邮件 对于特别重要的邮件,发信件前最好是先用记事本进行录入编辑,然后再利用菜单中的“插入文本中的文件”命令将所写内容复制到电子邮件的内容框中,这之后再发出,对方一般不会收到乱码。 #1 4.编码文件最好添加足够的邮件“信头”   如果你要发送特定编码的邮件,最好添加足够的邮件“信头”信息,这样能够一定程度上保证邮件能够被正确解码。建议对Uuencode编码用Uuencode encoding作信头,对Base64编码用Base64 encoding作信头,对QP编码用Printable encoding作信头。具体信头内容见前面篇章所述。 #1 5.尽可能利用附件功能发送邮件和文件   一般电子邮件软件的“附件”功能可以自动对非标准ASCII码格式的邮件文件自动进行Base64 方式编码(仅对附件部分进行编码),然后再进行发送。如果收信人的电子邮件软件能够区别邮件的这种编码方式(目前绝大多数电子邮件软件都支持MIME/Base64编码),则可以自动将邮件解码,而不会再出现乱码。因此强烈建议你采用这种方式发送中文邮件或非标准ASCII码格式的文件。 #1 6.发送重要邮件时最好先发测试信   发送重要的邮件信息时,为了确认是否无须编码即可发送正文(如果你不方便利用附件功能),你应该先在正文中用中文给收件人发一封测试信,而且还应确定收件人能否对邮件正文进行解码。如果发送已经编码的邮件,也最好添加足够的“信头”信息,以便收件人知道其所需的解码方法。 #1 7.可以考虑将中文文件转换为图像文件随附件发送 如果你向没有安装中文平台的人发送中文电子邮件,则可以考虑将中文文件转换为图像文件并随附件发送,这样做的好处是可以让收件方不用任何转换平台就能阅读你的中文邮件,具体做法包括用扫描仪将信件和图片制作成*.gif或*.jpg图形文件,并放在附件里发送;用Word应用程序或其他制图软件以在图片上打字的方法将中文内容转化为图像文件,放在附件里发送,这种方法还不需要扫描仪。 #1 8.电子邮件软件最好统一定义为中文简体(GB2312)编码 为了减少收信时出现乱码的现象,建议大家在使用电子邮件软件时统一都将字体的“国际设置”定义为“简体中文(GB2312)”。在中文版的Outlook Express或Outlook中,其缺省的设置都是中文简体(GB2312)编码,无需更改。但如果你要手动修改,也可以在Outlook Express中单击菜单栏“工具”/“选项”选项,选择“阅读”标签,并单击“国际设置”按钮,在其中选中“为接收所有邮件使用默认编码”。 #1 9.接收Uuencode编码的邮件最好不要使用Eudora软件 这是因为Eudora这个电子邮件软件会将附件文件恢复成二进制文件并存放在另一个目录里。对于分成多块传送的Uuencode代码,Eudora会将这些代码的第一部分恢复成文件,而后面的就不管了(这显然是不完整的)。这会妨碍你以后人工合并这些邮件。很多人使用The Bat!这种邮件软件,它对附件的文件究竟是恢复到目录中还是留在信体里会提供一个选项给你选择,在这种情况下你也要特别注意正确作出选择。