邮件乱码巧破译

原创 2005年05月31日 08:34:00


              
相信许多网友都遇到过乱码邮件,一些奇奇怪怪的字符,不知道是什么意思。产生乱码邮件的最主要原因在于传输机制不同或邮件的编码不同,如果能够识别这些编码,就可以找到破解的办法。
邮件乱码巧破译
一、E-mail编码标准
  由于一个汉字是用两个扩展ASCII码表示,对DOS、Windows及Unix系统来说,所有英文字母及符号都是用ASCII码来代表,ASCII码只用到每个字节的前7位。而一些电脑系统在通信时不使用8-bit clean传输方式,无法处理8位的数据或硬把8位数据当作7位来处理,数据就会被破坏。对电子邮件来说,有时候一个邮件在送达收信人的过程中,会经过很多台主机的转接传输服务,这中间的主机假如有一台不具备8-bit clean的传输条件,中文邮件可能就会被破坏。因此,不论是发送中文文本文件,还是发送EXE可执行文件、图形文件或压缩文件等二进制文件,都应该先进行编码。 E-mail编码主要有:
1.UU编码
  在早期传送非 ASCII码的文件时,最常用的便是这种UU(Unix-to-Unix encoding)编码方式。Uuencode和Uudecode分别是Unix系统中使用的UU编码和解码程序,后来被改写成为在DOS中亦可执行的程序。

2.MIME编码
  UU编码解决了E-mail传送非ASCII文件的问题,但这种方式并不方便。因而又发展出一种新的编码标准MIME(Multipurpose Internet Mail Extentions),一般译作“多媒体邮件传送模式”。顾名思义,它可以传送多媒体文件,在一封电子邮件中附加各种格式文件一起送出。
  MIME定义两种编码方式:Base64与QP(Quote-Printable)。QP的规则是对于资料中的7位无须重复编码,仅将8位的数据转成7位。 QP编码适用于非ASCII码的文字内容,例如我们的中文文件。而Base64的编码规则,是将整个文件重新编码成7位,通常用于传送二进制文件。编码的方式不同会影响编码之后的文件大小。而具有 MIME功能的E-mail软件大都能自动判别你的邮件是采用何种编码,然后自动选择用QP或Base64来解码。
  MIME标准现已成为Internet电子邮件的主流。现在最常使用的电子邮件软件Eudora、FoxMail、Netscape Mail、Outlook Express和Internet Mail等都支持MIME编码标准。

3.Binhex编码

  Binhex的编码方式常用于Mac机器。一般PC上的电子邮件软件,亦多数支持MIME的规格,很少有支持Binhex格式的。在常用的电子邮件软件中,只有Eudora具有这种功能,可直接解读Binhex的编码。

二、邮件乱码的原因及解决方法

  汉字邮件出现乱码的原因很多,主要的原因是Internet上的某些邮件主机不支持8位(非ASCII码格式)传输,以及不同的邮件编码,不同设置的电子邮件接收软件,不同语种的操作系统等。

  当你收到一封乱码的邮件时,应根据邮件内容中的关键字符,判别其编码方法。不同的乱码,在不同的平台上有不同的解决方法,因此解码前必须先看一下文件的内容,根据特征对文件可能的编码方式(Uuencode、Base64 encode、QP-encode或其它编码方式)进行判断。

1.Uuencode“乱码”

  Uuencode编码主要来自Unix环境的使用者,目前使用者已经很少。这种软件内部所用的算法为base64。其格式与Base64 encode格式非常相似,它们的差别仅仅在于“信头”部分的不同。Uuencode“乱码”大体格式为: begin 0600 index.gb MH;ZQOL2_PKS#O]3"N/S0PM*[M,ZAOPJCJ,G/U,+2U,"TM<30PM3VN_*XQ+:O …… end   在乱码前面含有“begin xxx”,后面紧接着编码之前原始文件的名称。接着是已经Uuencode编码的邮件的内容。在乱码内容后面,即最后一行为“end”。

  如果你的电子邮件接收程序不支持UU解码,那么你看到的就是这些Uuencode“乱码”。

解决Uuencode“乱码”的办法: ·将Uuencode“乱码”邮件转寄到自己的邮箱中,再使用能够支持UU解码的电子邮件接收程序(如Eudora、OutLook Express等)来接收该邮件。
·通过剪辑板将 Uuencode“乱码”存入文本文件,改文件名后缀为 UUE,然后使用Winzip 解码。
·将 Uuencode“乱码”存入一个文件,然后在DOS下用uudecode.exe程序将文件解码。
·将 Uuencode“乱码”存入一个文件,然后在Windows下用Wincode解码。 Wincode除支持UU编码外也支持MIME、Binhex等编码格式,应用范围颇为广泛。

2.Base64 encode“乱码”
  
  Base64是MIME标准编码之一。Base64 encode编码方式是将3个字节(8位)用4个字节(6位)表示,由于编码后的内容是6位的,因此可以避免第8位被截掉。Base64 encode“乱码”大体格式为: MIME-Version:1.0 Content-Type:text/plain; charset="us-ascii″ Content-Transfer-Encoding:base64 Status:R yrE68shis+o/IMTcsrvE3Ljmy9/L47YEzajRtrX-Y1re6zbYnu7Chow0LDQo=3d

  在Base64编码邮件的乱码前一般有如下几部分“信头”:Content-Type(内容类型)、charset(字符集)及Content-Transfer-Encoding(内容传输编码方式)。

  如果你的电子邮件接收程序不支持Base64解码,那么你看到的就是这些Base64 encode“乱码”。

  解决Base64 encode“乱码”的办法: ·将Base64 encode“乱码”邮件存成一个文本文件,改文件名后缀为.UUE,然后使用 Winzip 解码。

 ·将Base64 encode“乱码”邮件存成一个文件,将文件后缀改为.EML,由OutLook Express 打开,就可以自动解码。

3.QP-encode“乱码”
  QP-encode是MIME标准编码之一。QP-encode编码全名为“Quoted-Printable Content-Transfer-Encoding”。由于用这种格式表示的信息,其内容主要都是 ASCII字符集中可以打印的字符,因此名称中含有 printable。QP编码的方式,是将一个字节用两个16进制数值表示,然后在前面加“=”。QP-encode“乱码”大体格式为: =d2=bc=b3=b8=d5=db=c4=c4=bc=d2=b5=f6=b1=e5=c9=e7=b6=f8=b0,采用QP(Quoted-Printable)编码方式的邮件很容易进行判别,因为它的内容通常有很多等号“=”,因此不需要看“信头”也可以判断是否为QP编码。如果你的电子邮件接收程序不支持QP解码,那么你看到的就是这些QP-encode“乱码”。
  解决QP-encode“乱码”的办法: ·将QP-encode“乱码”邮件转寄到自己的邮箱中,然后用支持QP解码的电子邮件接收程序(如Netscape mail、Eudora、OutLook Express、Becky等)来接收该邮件。
 ·使用 Winzip 对 Quoted-Printable 解码。必须注意:(1)在邮件信头中检查、添加这样两行:Mime-Version: 1.0Content-Transfer-Encoding: quoted-printable;(2) 信头中间不要空行,信头和信体之间要有一个空行。这样形成的文件,改后缀名为UUE,即可双击启动 Winzip 得到解码。
4.HZ中文乱码
  由于网友们可能使用不同的电子邮件收发软件,因此,来自各个网友的邮件内容可能包含着看不懂的乱码,例如,如果看到下面这串乱码,你一定看不懂它的意思: HZ- ~{Q'Hm<~!"SCHm<~!"BrHm<~5D:C0iBB~}   实际上这是一串“简体中文HZ”编码,如果使用Outlook Express发送邮件时,选用HZ编码,而邮件的接收者使用Eudora来阅读邮件,看到的就是这些乱码。正确的方法是,在撰写邮件窗口中,选择“格式”菜单下的“语言”命令,并选中“简体中文(GB2312)”项,然后发送邮件。
  这时,如果你使用Outlook Express,可以打开“查看”菜单点击“语言”选项中的“简体中文(GB2312)”项,或者点击工具栏上“语言”后面的向下箭头,选择“简体中文(GB2312)”功能项,屏幕出现一个对话框,单击“是”按钮,所有邮件主题中含有指定字符集的邮件应用新的字符集。
  如果你使用Eudora之类的软件,可以使用“南极星”之类的软件,自动转换不同的汉字编码。如果还看不到的话,可将这些编码文本,拷贝到一个文本编辑器中。对于上面那串编码,你将看到下面的内容: “学软件、用软件、买软件的好伴侣”
5.“半个汉字”乱码
  汉字的另一个问题是所谓的“半个汉字”乱码。如果看到下面这串乱码,你一定看不懂它的意思:“把砑⒂萌砑⒙蛉砑暮冒槁隆薄* ”由于很多英文编辑软件以字符为单位来处理文本,汉字被删除一半后,剩余的部分会和相邻的汉字重新组合,使得文本面目全非。因此,除了在输入、删除的时候注意这种问题外,还要注意不要在英文字处理软件中轻易使用“字符替换”功能,这往往会把一个汉字的后一个字符和相邻汉字的前一个字符当成一个汉字被替换掉。对于“半个汉字”乱码,只要将“乱码”邮件存成一个文本文件,然后使用以字符为单位的编辑软件,将“乱码”行的首字符删除,后面的部分就会和相邻的“乱码”重新组合成可识别的汉字。
  如果上述方法不能奏效,那么只好告诉对方正确的发送方式,请对方重新发一份邮件给你。

 

C#邮件收发,收件有点乱码

  • 2011年04月11日 11:20
  • 642KB
  • 下载

邮件乱码处理

  • 2011年11月12日 11:23
  • 14KB
  • 下载

使用Powershell 脚本发送邮件乱码问题?

最近在使用Powershell 编码的时候发现一个问题,只要邮件中有中文字符的邮件执行脚本以后,我们发现收到邮件都是乱码,状况如下:对比下Powershell脚本,我们将邮件的·ENCODING 加上...

邮件乱码原因

  • 2013年11月29日 11:11
  • 5.78MB
  • 下载

outlook接收邮件乱码

最近遇到一个问题,outlook接收邮件乱码,一般乱码几本上都是编码问题,换了utf-8等一些编码发现还是乱码,打开乱码邮件一看发现charset=iso-2022-cn,从来没见过这种编码,几经折腾...
  • looksun
  • looksun
  • 2013年11月15日 09:07
  • 2642

javamail发送邮件 主题乱码解决

  • 2016年09月02日 10:45
  • 8KB
  • 下载

CodeView2.6(邮件乱码查看器)

  • 2014年04月28日 18:55
  • 287KB
  • 下载

UTL_SMTP发送邮件,防中文乱码处理!

DECLARE V_CONN UTL_SMTP.CONNECTION; L_REC_ARR ARRAY; V_DB_NLS_CHARA...

TD发邮件乱码问题

  • 2007年11月06日 16:52
  • 778B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:邮件乱码巧破译
举报原因:
原因补充:

(最多只允许输入30个字)