分享

程序中的汉字变乱码的解决方法

 喜欢的来看 2013-01-20
汉字出现乱码有好几种情况,大致可分成四类:网页、文本、文档和文件乱码。第一类是由于港台的繁体中文大五码(BIG5)与大陆简体中文(GB2312)不通用造成的;第二类是系统(菜单、桌面、提示框)显示乱码,这是注册表中有关字体的部分设置不当引起的;第三类是各种应用程序(包括游戏)本来显示中文的地方出现乱码,形成原因比较复杂,有第二类的乱码原因,也可能是软件用到的中文动态链接库被英文动态链接库覆盖造成的;最后一类是邮件乱码。
(一)、网页、文本和文档文件乱码的消除
网页乱码是浏览器(如IE等)对HTML网页解释时形成的。如果在网页的代码中有形如:〈HTML〉〈HEAD〉〈META CONTENT=“text/html;charset=ISO-8859-1”〉〈/HEAD〉……〈/HTML〉的语句,浏览器在显示此页时,就会出现乱码。因为浏览器会将此页语种辨认为“欧洲语系”。解决的办法是将语种“ISO-8859-1”改为GB2312,如果是繁体网页则改为BIG5。

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

还有一种解决办法是利用多内码显示平台来转换内码。常用多内码显示平台有:“南极星”、“四通利方”、“MagicWin 98等等。

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

文本、文档文件乱码,一般是繁体中文显示在简体中文系统下或者相反情况造成的。只要把原本是繁体的内码转换为简体内码(或者相反),就可消除乱码。

Word能胜任这类工作,例如要把繁体中文转换为简体中文,方法是:选择要转换内码的文件,在弹出的对话框中,选择“其它编码”中的“繁体中文(BIG5)”一项,打开此文件时就不会出现乱码。无乱码保存方法:在保存时选择“文件”中的“另存为”,先存为“Word文档,存盘后打开再存为纯文本等其它格式;您也可以用Word的“中文简繁转换”工具实现无乱码保存,方法是在菜单栏中选择“工具/语言/中文简繁转换”,内码转换后再保存。

除此之外,消除这类乱码还可用内码转换工具,对BIG5(繁体中文)和GB2312(国标码、简体中文)进行相互转换来实现。常用的内码转换工具有:“飓风简繁通、“内码转换大师、“华语通、“两岸通汉字内码转换器等等

(二)、系统乱码的消除

这类乱码是由于注册表中关于字体部分配置不正常造成的,即使您用内码翻译软件如四通利方、南极星、Magic Win98、两岸通等处理也不会消除。解决办法是:恢复注册表中关于字体部分设置。

如有一台版本相同且显示正常的机器,则可依下列步骤进行恢复:

1.在正常机器上选择“开始”/“运行”,在对话框中键入“REGEDIT”,打开注册表编辑器;

2.光标定位到“HKEY_LOCAL_MACHINE\ SYSTEM\CURRENT CONTROL SET\CONTROL\ FONTASSOC”,选择“注册表/导出注册表文件”,再选择“分支”,导出该分支注册表信息到文件(如LI.REG)中;

3.把LI.REG文件Copy到显示乱码的机器上,在显示乱码机器上运行REGEDIT,选择“注册注册表”/“导入注册注册表”,把LI.REG文件导入注册表中。

如没有版本相同且显示正常的机器,则需要您手工恢复字体部分注册表项,按以下步骤:

1.在乱码机器上打开“开始”——“运行”——REGEDIT,然后回车,打开注册表编辑器;

2.找到“HKEY_LOCAL_MACHINE\SYSTEM\ CURRENT CONTROL SET\CONTROL\FONTASSOC”,正常情况下,会有ASSOCIATED DEFAULTFONTS、ASSOCIATED CHARSET两个文件夹,其正确的内容为:

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc\Associated Charset]
"ANSI(00)"="YES"
"OEM(FF)"="YES"
"SYMBOL(02)"="NO"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc\Associated DefaultFonts]
"AssocSystemFont"="simsun.ttc"
"FontPackage"="新宋体"
"FontPackageDontCare"="新宋体"
"FontPackageRoman"="新宋体"
"FontPackageSwiss"="新宋体"
"FontPackageModern"="新宋体"
"FontPackageScript"="新宋体"
"FontPackageDecorative"="新宋体"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc\Associated Fonts]
@=""
3.当出现汉字乱码时,上述两个文件夹中内容就会不完整,有的没有ASSOCIATED CHARSET文件夹或其中内容残缺不全;有的ASSOCIATED DEFAULTFONTS下内容残缺。只要用REGEDIT在“HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\ CONTROL\FONTASSOC”下,根据以上正确内容恢复即可。
(三)、应用程序(包括游戏)乱码的消除

中文软件菜单等显示界面上出现乱码,可能是由于Windows注册表中关于字体设置的信息不正确地改变而造成的,这时候可以用上述第2点介绍的办法去解决。

如果用上法解决不了,那就是因为软件的中文链接库被英文链接库覆盖而引起的,这种现象经常发生在用微软开发工具例如VB、VC开发的中文软件上,这类软件中,菜单等显示界面上的汉字都是受一个动态链接库(DLL文件)控制,而软件的这个动态链接库一般安装在Windows的System目录下,如果以后安装了某个英文软件也使用同名的动态链接库,则英文软件的动态链接库就会覆盖WINDOWS\SYSTEM下的中文软件的动态链接库,这样,运行中文软件时就会调用英文的动态链接库,因此出现乱码。解决办法是重新安装中文软件,恢复中文动态链接库即可。

汉字出现乱码有好几种情况,大致可分成四类:网页、文本、文档和文件乱码。第一类是由于港台的繁体中文大五码(BIG5)与大陆简体中文(GB2312)不通用造成的;第二类是系统(菜单、桌面、提示框)显示乱码,这是注册表中有关字体的部分设置不当引起的;第三类是各种应用程序(包括游戏)本来显示中文的地方出现乱码,形成原因比较复杂,有第二类的乱码原因,也可能是软件用到的中文动态链接库被英文动态链接库覆盖造成的;最后一类是邮件乱码。
(一)、网页、文本和文档文件乱码的消除
网页乱码是浏览器(如IE等)对HTML网页解释时形成的。如果在网页的代码中有形如:〈HTML〉〈HEAD〉〈META CONTENT=“text/html;charset=ISO-8859-1”〉〈/HEAD〉……〈/HTML〉的语句,浏览器在显示此页时,就会出现乱码。因为浏览器会将此页语种辨认为“欧洲语系”。解决的办法是将语种“ISO-8859-1”改为GB2312,如果是繁体网页则改为BIG5。

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

还有一种解决办法是利用多内码显示平台来转换内码。常用多内码显示平台有:“南极星”、“四通利方”、“MagicWin 98等等。

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

文本、文档文件乱码,一般是繁体中文显示在简体中文系统下或者相反情况造成的。只要把原本是繁体的内码转换为简体内码(或者相反),就可消除乱码。

Word能胜任这类工作,例如要把繁体中文转换为简体中文,方法是:选择要转换内码的文件,在弹出的对话框中,选择“其它编码”中的“繁体中文(BIG5)”一项,打开此文件时就不会出现乱码。无乱码保存方法:在保存时选择“文件”中的“另存为”,先存为“Word文档,存盘后打开再存为纯文本等其它格式;您也可以用Word的“中文简繁转换”工具实现无乱码保存,方法是在菜单栏中选择“工具/语言/中文简繁转换”,内码转换后再保存。

除此之外,消除这类乱码还可用内码转换工具,对BIG5(繁体中文)和GB2312(国标码、简体中文)进行相互转换来实现。常用的内码转换工具有:“飓风简繁通、“内码转换大师、“华语通、“两岸通汉字内码转换器等等

(二)、系统乱码的消除

这类乱码是由于注册表中关于字体部分配置不正常造成的,即使您用内码翻译软件如四通利方、南极星、Magic Win98、两岸通等处理也不会消除。解决办法是:恢复注册表中关于字体部分设置。

如有一台版本相同且显示正常的机器,则可依下列步骤进行恢复:

1.在正常机器上选择“开始”/“运行”,在对话框中键入“REGEDIT”,打开注册表编辑器;

2.光标定位到“HKEY_LOCAL_MACHINE\ SYSTEM\CURRENT CONTROL SET\CONTROL\ FONTASSOC”,选择“注册表/导出注册表文件”,再选择“分支”,导出该分支注册表信息到文件(如LI.REG)中;

3.把LI.REG文件Copy到显示乱码的机器上,在显示乱码机器上运行REGEDIT,选择“注册注册表”/“导入注册注册表”,把LI.REG文件导入注册表中。

如没有版本相同且显示正常的机器,则需要您手工恢复字体部分注册表项,按以下步骤:

1.在乱码机器上打开“开始”——“运行”——REGEDIT,然后回车,打开注册表编辑器;

2.找到“HKEY_LOCAL_MACHINE\SYSTEM\ CURRENT CONTROL SET\CONTROL\FONTASSOC”,正常情况下,会有ASSOCIATED DEFAULTFONTS、ASSOCIATED CHARSET两个文件夹,其正确的内容为:

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc\Associated Charset]
"ANSI(00)"="YES"
"OEM(FF)"="YES"
"SYMBOL(02)"="NO"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc\Associated DefaultFonts]
"AssocSystemFont"="simsun.ttc"
"FontPackage"="新宋体"
"FontPackageDontCare"="新宋体"
"FontPackageRoman"="新宋体"
"FontPackageSwiss"="新宋体"
"FontPackageModern"="新宋体"
"FontPackageScript"="新宋体"
"FontPackageDecorative"="新宋体"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc\Associated Fonts]
@=""
3.当出现汉字乱码时,上述两个文件夹中内容就会不完整,有的没有ASSOCIATED CHARSET文件夹或其中内容残缺不全;有的ASSOCIATED DEFAULTFONTS下内容残缺。只要用REGEDIT在“HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\ CONTROL\FONTASSOC”下,根据以上正确内容恢复即可。
(三)、应用程序(包括游戏)乱码的消除

中文软件菜单等显示界面上出现乱码,可能是由于Windows注册表中关于字体设置的信息不正确地改变而造成的,这时候可以用上述第2点介绍的办法去解决。

如果用上法解决不了,那就是因为软件的中文链接库被英文链接库覆盖而引起的,这种现象经常发生在用微软开发工具例如VB、VC开发的中文软件上,这类软件中,菜单等显示界面上的汉字都是受一个动态链接库(DLL文件)控制,而软件的这个动态链接库一般安装在Windows的System目录下,如果以后安装了某个英文软件也使用同名的动态链接库,则英文软件的动态链接库就会覆盖WINDOWS\SYSTEM下的中文软件的动态链接库,这样,运行中文软件时就会调用英文的动态链接库,因此出现乱码。解决办法是重新安装中文软件,恢复中文动态链接库即可。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多