乱码的原因?222222222222222??????????????????

很多朋友都被Win 9x / 2000中各式各样的乱码所困惑。特别是收到的一些十分重要的邮件程序、文件时会遇到乱码,登上港台网站时会看到乱码,还有原先显示正常的Win 9x / 2000桌面、菜单中的汉字形如天书,本来显示正常的各种应用程序、游戏中的汉字也成了乱码等等,真的很是急人误事!那怎么办呢? 

汉字乱码分类 
汉字乱码现象有4种类型: 
1 .文本乱码:是Win 9x / 2000系统显示乱码,如:菜单、桌面、提示框等。这是由于Win 9x / 2000注册表中有关字体部分的设置不当引起的; 
2 .文档乱码:是各种应用程序、游戏本来显示中文的地方出现乱码。这种乱码形成的原因比较复杂,有第1类的乱码原因,也可能是软件中用到的中文动态链接库被英文动态链接库覆盖所造成的; 
3 .文件乱码:主要是指邮件乱码; 
4 .网页乱码:是由于港台的繁体中文大五码(BIG5)与大陆简体中文(GB2312)不通用而造成的。 

消除各类乱码的方法 

一 系统乱码的消除方法 
这类乱码是由于在Win 9x
/ 2000注册表中,关于字体部分配置不正常造成的,即使你用内码翻译软件处理也不会消除这类乱码。那怎么办呢?请跟我来: 

方法一:找一台与你的Win 9x
/ 2000版本相同且显示正常的机器,依下列步骤进行: 
1 .在正常机器上选择“开始”→“运行”,在对话框中键入“regedit”,打开注册表编辑器; 
2 .请你将光标定位到“HKEY_LOCAL_MACHINE systemCurrentControlSetControlFontassoc”,然后选择“注册表”→“导出注册表文件”,再选择“分支”,导出该分支注册表信息到文件(如ZT.REG)中; 
3 .把ZT.REG文件拷贝到你那显示乱码的机器上,方法是:在显示乱码的机器上运行“regedit”,打开注册表编辑器,选择“注册表”→“导入注册注册表”,把ZT.REG文件导入注册表中即可。 

方法二:如果你找不到一台与你的Win 9x
/ 2000版本相同且显示正常的机器,则需要手工恢复字体部分的注册表 
项,其步骤是: 

1 .首先在显示乱码的机器上选择“开始”→“运行”,在对话框中键入“regedit”,打开注册表编辑器; 
2 .选择“HKEY_LOCAL_MACHINESystem CurrentControlSetControlFontassoc”,正常情况下,会有Associated DeaultFonts、Associated CharSet两个文件夹,其正确的内容应是: 

子目录内容 
中文Win98 
中文Win98(OEM版) 
中文Win2000 
Associated CharSet 
ANSI(
00 = “yes” 
GB2312(
86 = “yes” 
DEN(FF)
= “yes” 
SYMBOL(
02 = “no” 
ANSI(
00 = “yes” 
GB2312(
86 = “yes” 
OEM(FF)
= “yes” 
SYMBOL(
02 = “no” 
ANSI(
00 = “yes” 
OEM(FF)
= “yes” 
SYMBOL(
02 = “no” 
Associated DefaultFonts 
AssocSystemFont
= “simsun.ttf” 
FontPackageDecorative
= “宋体” 
FontPackageDontcare
= “宋体” 
FontPackageModern
= “宋体” 
FontPackageRoman
= “宋体” 
FontPackageScript
= “宋体” 
FontPackageSwiss
= “宋体” 
或 
AssocSystemFont
= “simsun.ttf” 
FontPackage
= “新宋体” 
FontPackageDecorative
= “新宋体” 
FontPackageDontcare
= “新宋体” 
FontPackageModern
= “新宋体” 
FontPackageRoman
= “新宋体” 
FontPackageScript
= “新宋体” 
FontPackageSwiss
= “新宋体” 


3 .当出现汉字乱码时,上述两个文件夹中的内容就会不完整,有的没有Associated CharSet文件夹或其中的内 


容残缺不全;有的Associated DefaulFonts下的内容残缺。如果遇到这种情况怎么办呢?其实你只要打开注册表编辑器,在“HKEY_LOCAL_MACHINESystemCurrentControlSetControl 
Fonassoc”下,根据以上的正确内容恢复即可。 

二 应用程序、游戏乱码的消除方法 
明明是中文软件,可显示界面上却出现乱码,这可能是由于Win 
98 / 2000注册表中关于字体设置的信息不正确地被改变而造成的,一般是因为软件的中文链接库被英文链接库覆盖而引起的,这种现象经常发生在用微软开发工具,例如VB、VC开发的中文软件上。在这类软件中,菜单等显示界面上的汉字都是受一个动态链接库“.DLL文件”控制,而软件的这个动态链接库一般是安装在Win  98 / 2000的System目录下的,如果以后你安装了某个英文软件也使用同名的动态链接库,则英文软件的动态链接库就会覆盖掉你原先的WindowsSystem下的中文软件的动态链接库。这样,当你运行中文软件时就会调用英文的动态链接库,因此出现乱码。解决办法是重新安装中文软件,恢复中文动态链接库即可。 

三 电子邮件乱码的消除方法 
1 .造成电子邮件乱码的原因很多,主要有以下几个方面: 
1 )操作系统语种不同。对于中文电子邮件,如果收信方所用的操作系统是英文环境而且没有外挂中文系统或未切换为中文编码方式,也会无法看到中文,只见到乱码。所有的双字节字符(如中文简 / 繁体的GB和BIG5码及日文的JIS、 EUC和朝鲜文的 KSC码等)在非本语种操作系统下都会出现乱码。同样在中文简体的GB码环境下看其他双字节字符时也只能看到乱码。 

解决方法:安装多语言支持包或使用多内码显示平台,对收到的邮件,根据其使用的语种切换到相应的编码方式即可消除乱码。 

2 )邮件服务器不支持8位(非ASCII码格式)。传输邮件的传输机制或邮件编码的不同,可能造成邮件服务器不支持8位(非ASCII码格式)传输而形成邮件乱码。例如直接发送中文或二进制等非ASCII码格式的邮件(如中文双字节文件、图片文件.jpg、可执行文件.exe或压缩文件.zip等二进制文件)时,邮件服务器有可能无法处理,便把信件中每个字符的第8位都过滤掉,从而造成邮件信息的失真或损坏,在收到邮件时就是一堆乱码。 

解决方法:在发送8位格式的文本文件时,必须事先进行编码,将文件转换为7位ASCII码或更少位数的格式,然后才能保证文件的正确传送。收件人收到7位或更少位格式的邮件后,可以再转换为8位的格式,这样就可避免乱码。 

3 )收发端使用的E - mail软件和设置不同。一般E - mail软件的“附件”功能都可以自动对信件先进行编码,然后再送出。这样,只要收信人使用E - mail软件就能区别信件的编码方式,就可以自动将信件解码。然而由于收发件人所用的E - mail软件默认配置不同或收发件人自己定制的一些选项不同,所以在收到编码的信件后,系统不一定能识别出信件所用的编码方法,自然无法自动解码,这样就会出现乱码。 

解决方法: 

①可以用WinZip
+ IE来解码,请你把乱码邮件的内容,拷贝到剪贴板中,然后将其粘贴到记事本中,存为文本文件(例如YJ.txt),再将其后缀改为.uue(改为YJ.uue),点击此文件,会启动WinZip,然后启动IE,把WinZip中的001.txt 文件拖到IE窗口中,就会显示邮件原来的内容,而不会看到乱码。 

②可以根据邮件中的关键字符判断编码方法,选取合适的解码软件进行解码。邮件的编码方式主要有:UUENCODE、 Base64 encode、QPencode、BINHEX等。 UUENCODE:这是UNIX环境下使用的编码方式,目前已经很少用,大体格式为: 

begin 
644  kk.zip M1G)O; 2 ! I; & EN+F)B3T ! C(VEE+FYC = ' 4N961U+G1W(%=E9"!.;W8@(#8@,3(ZM,SDZ,C4@,3DY- @I296-E:79E9#H@9G)O;2!F;&%B;6%I;"......end 

特征:乱码前面含有“begin xxx”,后面是编码前的原始文件名(如kk.zip),接着是已经过编码的信件内容(如上述的乱码部分),最后一行为“end”。 

解码办法:可用BECKY!EUDORA等E
- mail软件,选择编码中相应的选项就可解码,也可以在E - mail软件中保存乱码邮件,存为后缀为“.UUE”格式的文件,然后用Winzip 解码展开。解码后就会消除乱码。 

MIME
/ BASE64 encode:该编码方式将3个字节用4个字节表示,由于编码后的内容是6位的,因此可避免第8位被截掉,大体格式为: 

MIME-Version:
1.0  

Content-Type:text
/ plain; charset = " us-ascii "  

Content-Transfer-Encoding:base64 

Status:R 

SGmhQbF6pm6hSafapmK69Lj0pFexb6q+sXqsT6Skp OWrSKXzsN3DRLFNrmGhQQ0Kq1+sTqq6vdCx 
0LF6tFit07D 

dw0ShRw0KD QqtuqX9p2m2RLF6p9qoz6XOIE 1Py3Jvc29mdCuiB 

JbnRlcm5ldCBN…… 

特征:乱码前一般有如下几部分“信头”:Content- Type(内容类型)、CharSet(字符集)和Content-Transfer-Encoding(内容传输乱码方式)。 

解码办法:用E
- mail软件,选择编码中Base64 选项就可解码,解码后会消除乱码。 

QpencodeQp:全称“Quoted-Printable Content-Transfer-Encoding”。因为这种格式邮件的内容都是 ASCII字符集中可以打印的字符,所以名称中含有Printable。大体格式为: 

= A1A = B1z = A6n = A1I = A7 = DA = A6b = BA = F4 = B8 = F4 = A4W 

= B1o...... 

= E5 == ABH = A5 = F3 = B0 = DD = C3D = B1M = Aea = A1A...... 

特征:内容通常有很多等号“
= ”,因此不需要看“信头” 也可以判断是否为QP编码。 


解码办法:把邮件中类似A1A
= B1z = A6n...的部分编码全部复制下来,贴到一个新的纯文本文件中,然后在文件头部加入Quoted - Pintable格式的文件头: 
Contenet
- Type:text / plain;Charset = " GB2312 "  

Content
- Transfer - Encoding;Quoted - Pintable 

然后以“.EML”为后缀保存文件,用资源管理器双击打开文件即可显示正确的内容。如果还有部分汉字乱码,可以用WinZip对存盘后的EML文件进行解压,即可看到正确的内容。 

BINHEX:这种编码方式大体格式为: 

(This file must be converted with Binhex4.
0

SGmhQbF6pm6hSafapmK69Lj0pFexb6qssTqq6vdCx 
0LF6tFit07Ddw0ShRw0KDQqtuqX9p2m2RLF6p9q 

oz6XOIE…… 

解码办法:用E
- mail软件对它解码;也可在E - mail软件中保存乱码邮件,存为后缀为“.HQX”格式的文件,然后用WinZip解码展开,解码后会消除乱码。 

UTIF
- 7 / UTIF - 8 :它们是UNICODE的两种转换码。 

UTIF
- 7编码方式大体格式为: 

+ SGmhQbF / 6pm6hSafapmK69L / j0pFexb6q+sXqsT6Skp. OWrSKXzsN3DRLFNrmGhQQ0Kq1-sTqq6vdCx 
0LF6tFit07Ddw0 

ShRw0KD QqtuqX9p2m2RLF6p9qoz6XOIE 1Py3Jvc29mdCuiBJbn 

Rlcm5ldCBN…… 

解码办法:在原E
- mail头加入以下信息: 

MIME-Version:
1.0  

Content-Type:text
/ plain; charset = " utf-7 "  

Content-Transfer-Encoding:7bit 

插入后与字符留一空行,将邮件存为“.EML”后缀,然后用Outlook即可解码,消除乱码。 

UTIF
- 8  

解码办法:在原E
- mail头加入以下信息: 

MIME-Version:
1.0  

Content-Type:text
/ plain; charset = " utf-8 "  

Content-Transfer-Encoding:8bit 

将邮件存为“.EML”后缀,然后用Outlook即可解码,消除乱码。 

另外,还可以采用以下方法解决: 

A.请你在Outlook Express 中,把“查看”→“编码”选为“简体中文”; 

B.更改IE的设置:在IE浏览器中,打开“工具” →“Internet选项(o)...”→“高级”,将“浏览”中“始终以 UTF
- 8  发送URL”选项前面的勾去掉; 

C.或将文件下载到本地硬盘里面再打开(点击鼠标右键选择“文件另存为…”)。保存文件时,文件名可能会是乱码,只需更改该文件名即可; 

D.或直接使用文件名为英文的附件,可以直接在IE中打开。 

但有时仍不能奏效。 


③无意中,笔者近日在网上冲浪时发现了一个好东西:很酷的CodeView“乱码察看器”!好事共享,不敢独吞!这就赶紧介绍给朋友们: 
大名:乱码察看器 

小名:CodeView 

版本:
2.50  

系统平台:Win 
95 / 98 / NT / 2000  

CodeView“乱码察看器”顾名思义就是用来察看各种乱码的工具软件,目前已经可以支持MIME
/ BASE64,Quoted - Printable、HZ和UUCode 4种形式的编码和解码,通过一些特殊的算法,此程序还可以解开部分由于字节高位被屏蔽而形成的死乱码(使用其他方式的解码),另外还提供了很多附加的功能,比如单键解码功能和混合乱码识别功能,使得使用本程序解码变得非常容易和轻松,CodeView是绿色软件,无需安装,只要将得到的压缩文件解开到一个目录中即可运行。它有两种使用方法: 

方法一:在有乱码的窗口中直接按下单键解码热键,默认为F7,如果窗口中的乱码能被识别,就会有一个窗口覆盖当前的乱码窗口,你可以直接在这个窗口中阅解码后的内容。在大多数情况下,笔者建议你使用这个方式。 

方法二:将乱码的内容通过剪贴板复制到CodeView“乱码察看器”的源窗口中,然后你可以试着用不同的解码方式进行解码。这种方式解码将给你更多的选择自由,并且可以使用一些在单键解码中无法实现的解码方式(主要是其他方式解码和UUCode解码),对于一些单键解码无法解决的乱码,你就可以使用此方式来试试解码。 

下载地址:http:
// www.skycn.com/soft/394.html
2 .避免别人收到乱码邮件的方法: 

1 )发送前将邮件按7位格式重新编码 

在发送8位格式的文本文件时,必须事先进行编码,将文件转换为7位ASCII码或更少位数的格式,然后才能保证文件的正确传送。收件人收到7位或更少位格式的邮件之后,可以再转换为8位的格式,这样就可以正确阅读了。在邮件客户端软件中的书写选项中,设定默认自动为7位编码。 

2 )E - mail软件中的正确设置 

使用英文E
- mail软件应设置成: 

文字设定Default CHARSET:ISO 
8859 - 1 (Latin1) 

编码方式Encoding:Quoted
- Printable,不可选择7位(因为7位不支持中文) 

字码页Code Page(可选):936或HZ
- GB - 2312  

以支持整字识别邮件格式:MIME 

字体:宋体 

中文E
- mail软件应设置成: 

文字设定Default CHARSET:简体中文GB2312 

编码方式Encoding:Quoted
- Printable邮件格式:MIME 

字体:宋体 

Outlook Express中应把“简体中文(GB2312)”作为 


默认的邮件使用语言,选择“国际设置”为接收的所有邮件使用默认的编码。 
3 )发送重要信息时先发测试 

当你需要发送重要信息时,为了确认是否无须编码即可发送正文,应该先发送测试信。而且还应确定收件人能否对附件文件进行解码。如果发送已经编码的邮件,则最好添加足够的“信头”信息,以便收件人知道所需的解码方法。建议你对UUENCODE
/ UUDeview编码方式用UUENCODING作信头,对Mpack编码方式用Base64 encoding作信头。 

4 )转换成合适的内码 

在E
- mail软件的书写选项中,设定默认自动为7位编码。对用汉字系统编辑的中文邮件在发送前,最好在固定的签字栏中注明自己所使用的汉字码标准(如:GB2312、中文 HZ、GBK);港澳台及东南亚地区邮件作者在使用BIG5码撰写完邮件、向内地发送前要转换成上述3种简体国标码中的一种形式并在签字栏中注明。如不转换则可能无法阅读,因为国内用户使用的邮件系统有很多是不支持BIG5码的。 

5 )利用“附件”功能发送重要的文件 

邮件系统附加这类非标准 ASCII码格式的文件时,附加文件通常可以自动进行“Base64”方式编码(仅对附件部分进行编码)。在用“附件”方式发送邮件之前,无需进行编码,否则适得其反。因为邮件软件能够自动成功解码这类 “附加”文件,因此在发送中文类邮件时应该首选这种方法。 

如果无法以附件方式发送文件,则必须在正文中发送中文或二进制文件。如果发
/ 收件人之间远隔万里,则传送过程中,第8位将可能被截掉。这时最好先在正文中用中文给收件人发一封测试信,并了解对方能否正确收到邮件正文。如果第8位被截掉,则收件人将会看到一些乱码,而不是上述的uu / b64 / Qp等格式,而且这种信件几乎不可恢复。 

解决方法:在你所使用的邮件系统中,选择其首选项或选项配置中的“Quoted Printalbe”或“MIME encoding”即可。 

3 .非中文平台上,使中文电子邮件不出现乱码方法 

当对方在没有中文平台的情况下打开你发的中文电子邮件时,就会出现乱码。解决办法有两种: 

1 )用E - mail AID之类的工具。UCWIN GOLD  1 .0附带的工具E - mail AID可把文本文件转换为AID格式文件,大小只比原TXT文件增加几K。写好中文邮件后,用文本格式存盘,然后用E - mail AID以AID格式保存,最后把此文件连同E - mail AID一起作为附件插在信中。对方收到信后,只需运行E - mail AID打开AID格式文件即可看到汉字,不管对方在何种语言平台下,都不会出现乱码。 

2 )把中文电子邮件以图形格式保存。用画笔等绘图软件书写中文邮件,在图片中输入文字,用默认的BMP格式保存,将属性置为黑白模式(以减少BMP图片体积),然后用 WinZip把它压缩成ZIP格式,作为附件在邮件中发送,这样不管对方在何种语言平台下,都不会出现乱码。这种方法的缺点是生成的BMP中文邮件的体积比较大。 

4 .收信方排除乱码的方法 


请你在“查看(V)”下拉菜单中选中“语言”,随后出现的菜单中会包括本系统所能支持的全部汉字标准,在其中单击邮件中所指明的一种。如果收到的邮件中没有指明其所使用的汉字标准,则只可按顺序单击,直到邮件正文显示正确为止(数个汉字标准中必有一个前面有“.”标记,此即你编辑器所用的汉字标准)。若使用的是Netscape,可在Option菜单的Document Encode中选择相应的项目即可。 
四 关于网页、文本和文档文件乱码的消除方法 

大家知道,网页乱码是浏览器对HTML网页解释时形成的。如果在网页的代码中有形如: 

〈HTML〉〈HEAD〉〈META CONTENT
= “text / html;charset = ISO - 8859 - 1 ”〉〈 / HEAD〉....〈 / HTML〉的语句,浏览器在显示此页时,就会出现乱码。因为浏览器会将此页语种辨认为“欧洲语系”。 

解决办法: 

1 .将语种“ISO - 8859 - 1 ”改为GB2312,如果是繁体网页则改为BIG5。 

2 .不修改网页代码,事先为浏览器安装多语言支持包(例如在安装IE时要安装多语言支持包),这样在浏览网页出现乱码时,就可以在浏览器中选择菜单栏下的“查看”→ “编码”→“自动选择””→“简体中文(GB2312),如为繁体中文,则选择“查看”→“编码”→“自动选择””→“ 繁体中文(BIG5),其他语言依此类推选择相应的语系,这样可消除网页乱码现象。 

3 .利用多内码显示平台来转换内码。 

4 .网页无乱码保存的方法是:用浏览器打开网页时,在 “查看”→“编码”中选择“自动选择”,存盘时保存类型选 “Web页”,编码选择“UNICOD”,这样保存过的网页再次打开时,在浏览器菜单“查看”→“编码”中不管选择简体中文(GB2312)、简体中文(HZ)还是UNICODE(UTF - 8 )或繁体中文(BIG5),最终显示都不会出现乱码。 

Win 9x
/ 2000中文本、文档文件的乱码,一般是繁体中文显示在简体中文系统下,或者是在相反的情况造成的。只要把原本是繁体的内码转换为简体内码(或者相反)就可消除乱码。Word 2000就能胜任这类工作,例如要把繁体中文转换为简体中文,方法是:选择要转换内码的文件,在弹出的对话框中,选择“其他编码”中的“繁体中文(BIG5)”一项,打开此文件时就不会出现乱码。无乱码保存的方法:在保存时选择“文件”中的“另存为”,先存为 “Word文档”,存盘后打开再存为纯文本等其他格式;你也可以用Word 2000的“中文简繁转换”工具实现无乱码保存,方法是在菜单栏中选择“工具 ”→“语言”→“中文简繁转换”,内码转换后再保存。金山公司的WPS 2000也能转换内码,支持GB2312、BIG5、GBK等3种主要的汉字编码,并可在输出RTF、TXT、HTM格式文件时对内码进行转换。除此之外,消除这类乱码还可用内码转换工具,可以对BIG5(繁体中文)和GB2312(国标码、简体中文)进行相互转换来消除乱码。
 
 
 

你可能感兴趣的:(encoding,浏览器,邮件服务器,语言,工具,平台)