文本的四种编码方式(转)[@more@]
简单介绍一下这四种编码方式:
ANSI:系统预设的标准文字储存格式。ANSI是American National Standards Institute的缩写。它成立于1918年,是一个自愿性的组织,拥有超过1300个会员,包括所有大型的电脑公司。ANSI专为电脑工业建立标准,它是世界上相当重要的标准。
Unicode:世界上所有主要指令文件的联集,包括商业和个人电脑所使用的公用字集。当采用Unicode格式储存文件时,可使用Unicode控制字符辅助说明语言的文字覆盖范围,如阿拉伯语、希伯来语。用户在“记事本”中输入含有Unicode字符的文字并储存文件时,系统会提示你必须选取“另存为”中的Unicode编码,这些字符才不会被遗失。需要提醒大家的是,部分Windows 2000字型无法显示所有的Unicode字符。如果发现文件中缺少了某些字符,只需将其变更为其它字型即可。
Unicode big endian:在Big-endian处理器(如苹果Macintosh电脑)上建立的Unicode文件中的文字位元组(存放单位)排列顺序,与在Intel处理器上建立的文件的文字位元组排列顺序相反。最重要的位元组拥有最低的地址,且会先储存文字中较大的一端。为使这类电脑的用户能够存取你的文件,可选择Unicode big-endian格式。
UTF-8:UTF意为通用字集转换格式(Universal Character Set Transformation
Format),UTF-8是Unicode的8位元格式。如果使用只能在同类位元组内支持8个位元的重要资料一类的旧式传输媒体,可选择UTF-8格式。
能否举一些例子,而且偶想知道电子邮件里面的编码是如何的?
邮件编码介绍及乱码的解决
E-mail一般在传送过程中都要对文件进行编码。这是因为E-mail只能传送ASCII码格式的文字信息。ASCII码为7位代码,非ASCII格式的文件在传送中必须经过编码工具编成相应的A SCII码进行传输,接收端在收到后再根据编码规则进行解码。若非如此就会在传输过程中出现编码截位的问题,导致收信方出现乱码。特别是中文内码的文字,属于8 位代码,并非标准的ASCII码形式,由于国内通行的大部分邮件服务器都能够处理GB内码文件,所以可以直接传送文件而不需要编码,但如果要将中文邮件发到国外或在不支持8 位(非标准ASCII码格式)的某些邮件主机上传输,就会产生乱码。具体的说就是在直接发送中文或非ASCII码的邮件时邮件主机无法处理,会把文件中每个字符的第八位都滤掉(截去第八位)从而使一些信息和原始信息截然不同,或邮件完全损坏成为乱码无法阅读。这也是目前造成邮件乱码的主要原因之一。如果我们对邮件进行七位编码然后进行传输解码,就能解决截位乱码现象。
E-mail中一般采用UU、MIME、BINHEX三种编码标准,当邮件出现乱码时,很多是由于E-mail编码不对而造成的,由于每种编码其格式都有其各自特征,这就给了我们一个判别的标志。我们可以根据这些特征进行编码判断并采取相应的方法来解决。
一、UUENCODE编码判断及解决。
UUENCODE内部所用算法为Base64,其格式为:
begin 644 gx.zip Mig)0;....
...
end
其格式特征为在乱码之前会有“begin xxx”后紧跟被编码的原始文件名称,然后是编码信件内容,在最后一行为“end”。
根据这些特征我们判断出编码方式为UUENCODE方式,就可以使用一些相应DECODE软件来解码。具体方法有:
(1)将Uuencode“乱码”邮件转寄到自己的邮箱中,再使用能够支持UU解码的电子邮件接收程序(如Eudora、OutLook Express等)来接收该邮件。
(2)通过剪贴板将Uuencode“乱码”存为文本文件,改文件名后缀为UUE,然后使用Winzip解码。
二、MIME方式编码判断及乱码解决方法
(一)Base64 encode编码判断
Base64大体格式为:
MIME-Version:1.0
Content-type:text/plain;Charset="us-ascii"
Content-transfer-encoding;base64
....
在乱码前面一般有以下几部分“信头”:Content - type (内容及类型),Charset(字符集)及Content-Transfer-encoding(内容传输编码方式),根据以上信息非常好判断。解决方法有:
(1)将Base64 encode“乱码”邮件存成一个文本文件,改文件名后缀为.UUE,然后使用Winzip解码。
(2)将Base64 encode“乱码”邮件存成一个文件,将文件后缀改为.EML,由OutLook Express打开,就可以自动解码。
(二)QP编码判断
QP编码大体格式如下:
=A1A=B1Z=A6N=A1I=AT=DA
....
采用QP编码的信件也很容易判断,只要乱码内容有很多符号“=”就可判断为QP编码。QP乱码解决方法有:
(1)将QP-encode“乱码”邮件转寄到自己的邮箱中,然后用支持QP解码的电子邮件接收程序(如Netscape mail、Eudora、OutLookExpress、Becky等)来接收该邮件。
(2)使用Winzip对Quoted-Printable解码。必须注意:
a.在邮件信头中检查、添加这样两行:Mime-Version:1.0 Content-Transfer-Encoding: quoted-printable ;
b.信头中间不要空行,信头和信体之间要有一个空行。这样形成的文件,改后缀名为UUE,即可双击启动Winzip得到解码。
三、其它原因造成的邮件乱码:
(一)HZ中文乱码
由于网友们可能使用不同的电子邮件收发软件,因此,来自各个网友的邮件内容可能包含着看不懂的乱码,例如,有时会看到“囊馑迹Z ”这样奇怪的文字内容,实际上这是一串“简体中文HZ”编码。如果使用Outlook Express发送邮件,选用HZ编码,而邮件的接收者使用Eudora来阅读邮件,看到的就是这种乱码。正确的方法是,在撰写邮件窗口中,选择“格式”菜单下的“语言”命令,并选中“简体中文( GB2312)”项,然后发送邮件。这时,如果你使用OutlookExpress,可以打开“查看”菜单点击“语言”选项中的“简体中文(GB2312)”项,或者点击工具栏上“语言”后面的向下箭头,选择“简体中文( GB2312)”功能项,屏幕出现一个对话框,单击“是”按钮,所有邮件主题中含有指定字符集的邮件应用新的字符集。如果你使用Eudora之类的软件,可以用“南极星”之类的软件自动转换不同的汉字编码。如果还看不到的话,可将这些编码文本,拷贝到一个文本编辑器中查看。
(二)“半个汉字”乱码
汉字的另一个问题是所谓的“半个汉字”乱码。如果看到下面这串乱码,你一定看不懂它的意思: “把砑⒂萌砑?⒙蛉砑暮冒槁隆薄*”
这是由于很多英文编辑软件以字符为单位来处理文本,汉字被删除一半后,剩余的部分会和相邻的汉字重新组合,使得文本面目全非。因此,除了在输入、删除的时候注意这种问题外,还要注意不要在英文字处理软件中轻易使用“字符替换”功能,否则系统往往会把一个汉字的后一个字符和相邻汉字的前一个字符当成一个汉字处理。
对于“半个汉字”乱码,只要将“乱码”邮件存成一个文本文件,然后使用以字符为单位的编辑软件,将“乱码”行的首字符删除,后面的部分就会和相邻的“乱码”重新组合成可识别的汉字。
如果上述方法不能奏效,那么只好告诉对方正确的发送方式,请对方重新发一份邮件给你了。
讲了这么多,相信大家对E-MAIL的编码有了一定了解,对于一般的编码乱码也有了一定的判别能力了。但E-MAIL乱码不仅仅是由于编码不同所造成的,还可能有其它的原因,比如:
1.该邮件采用了其它少见的编码方法,如Binhex或XXencode编码等。如果乱码前面有“信头”信息(一般显示了该邮件所用的编码方式),即可用X ferp111或其它“智能型”Windows程序将其解码。
2.是否在中文环境内。如果你所用的操作系统是英文环境,而你又没有外挂中文系统(如中文之星)或未切换为中文编码方式,则你自然看不到中文(如R ICHWIN四通利方或南极星等),看到的只能是乱码。注意,双字节字符有中文简/繁体的GB和BIG5码及日文的JIS、EUC和朝鲜文的KSC码等,在G B码环境下看其他双字节字符时也只能看到乱码。在这些情况下,须用转码工具如Richwin、南极星等进行转换。
3.邮件未经过编码造成第8位字节滤掉成为无法还原的死乱码文档。
四、为了尽量避免出现乱码问题,下面给出几点建议:
1.利用“附件”功能发送文件。
2.无法以附件方式发送文件时,则必须在正文中发送中文或二进制文件。方法是在你所使用的邮件系统中,选择其首选项或选项配置中的“Q uoted Printalbe”或“MIMEencoding”项。
3.发送重要信息时先发测试信
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-946280/,如需转载,请注明出处,否则将追究法律责任。