乱码大全(7)──MIME/BASE64处理实例

来源:百度文库 编辑:神马文学网 时间:2024/04/28 22:20:41
但是,即使是正确的 MIME 编码也可能因为文本格式不规范而不能正确解码,这个时候,你从 email 程序或 Hotmail 里面只能得到 BASE64 编码的乱码,而不能正确解码。我们在 Pwindiws 95 中推荐使用 UltraEdit 5.0,并以此为例来讲处理过程。我们来看这样一封典型信:( 行号是为阅读清楚,不属于信的内容)。这封信是根据我帮助一个朋友解码的实例改的。
01: From: "bluesea" 
02: To: "=?gb2312?B?sKLEvg==?=" 
03: Subject: A test :)
04: Date: Sat, 3 Jan 1998 15:31:38 +0800
05: X-Mime-Autoconverted: from 8bit to BASE64 by ms1.inet.tw id PAA06553
06: Content-Length: 222
07:
08: ICAgIKGwwtLC67TzyKuhsaOs1/fV36O6Ymx1ZXNlYaOsy67Evsflu6pCQlOzydSxoaO7ttOt1Nog
09: QkJT1tDXqtTYo6yw7w0K1vq8xsvju/qz9dGn1d+94r72yrnTw8jtvP65/bPM1tDT9rW9tcTKtbzK
10: zsrM4qGjsb7OxNSt1NjT2suuxL7H5buqIEJCUw0KtcQgSW50ZXJuZXQgzNbC28f4oaO12N
这封信不能通过 OutLook Express 和 Winzip 恢复, 当然,我们还可以找其他程序,或者其他的 email 程序自动恢复信的内容,我们假设这些条件不符合,需要适当的手工恢复。我们能够认定信体是 MIME/BASE64 编码,那么一定可以找到相应的解决办法。首先备份你的信。然后进行下面的处理:
第一种方法,我们可以把原信的5、6两行换成下面的两行,注意第4、5行之间不要有空行。
Content-Type: text/plain;charset="gb2312"
Content-Transfer-Encoding: BASE64
然后将文件名后缀改为 EML,再由 OutLook Express 打开。如果不是 GB 汉字,而像是 BIG5,只需将 "gb2312" 改为 "big5" 再试验。如果你最终认定不是文本,而是二进制文件;或者是明显的二进制文件,email 程序却不能还原成夹带 (Attached) 的文件,那么需要将信件中的“Content-Type: text/plain;” 改为“Content-Type: application/x-download;”。
第二种方法,假如没有 OutLook Express,我们还可以借助 Winzip 6.3。 你只需在原信中,在 MIME 编码的那三行中间的任意位置加一个回车,把它搞成四行,然后将文件后缀改为 UUE,再用 Winzip 6.3 打开。信体就会被正确解码。说起来你可能不相信,觉得这个方法闻所未闻,像天方夜谭。这方法连我自己都不信,但是实践证明是有效的。
最后,还差一点,就是原信第二行的内容:To: "=?gb2312?B?sKLEvg==?=" ,这信是发给谁的呢?这是 email 程序中在标题运用 MIME/BASE64 编码的例子。我们请南极星 NJWIN 出山。NJWIN 1.58(1.6) 的 Option 有这样一项:Support Internet MIME encoding,选中此项,即刻可以看到中文。
在 Pwindows 95 中,如果用 Notepad 或选择了 GB2312 字体的 Ultraedit来 看信,那么,请不要选中 NJWIN Option 中 My Windows System - Simplified GB 一项,而选择 Standard English/Western。这样的目的是让 NJWIN 的汉字显示起作用。可以看到收信人这一行是:“To: "阿木"