

chm格式电子书本质其实是html网页文件,windows自带的用来查看chm文件的是c:\WINDOWS\hh.exe,不像IE,它不支持选择字符编码。我们用的通常又是gb编码,常常有如此的乱码问题出现。
尝试打开Ie,我的是7.0,将字符编码换为西欧(windows),乱码有所改善,但如图所示,尤其是希腊字母仍不行。


继续更改ie编码为unicode(UTF-8),如图,已经显示正常。


要注意的是每次改变字符编码,ie最好需要重启,不然见不到效果。网上也有一些关于chm乱码的解决处理办法,引用两例,方法没试过,不过说的蛮有道理。
1。CHM文件是打包后的网页文件,而一般而言,国外发布的网站常常会用到“西欧ISO”格式,因此当浏览器设置为Unicode或者是GB的时候,诸如“ ‘s ”,“ ’d ”之类的会显示位一个中国字。这个在Programming Applications for Windows的CHM中格外严重。
解决方法是:CHM的默认阅读工具是WINDOWS目录下的hh.exe文件,只要让它工作在English模式下就好了。考虑到以前为了玩曹操传等繁体游戏用的AppLocal(微软出的,解决乱码想到好),于是就想到用它来试一试。
打开AppLocal,在程序的路径选择才c:\WINDOWS\hh.exe(我的机器是这样的),在参数中选择你要打开的CHM文件的Full-path(路径+文件名),下一步,语言选择English,下一步,选择制作一个快捷方式,OK,以后用这个快捷方式就可以打开那个CHM了,不会影响其他的文件打开。
2。在注册表 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International 下有 AutoDetect 和 Default_CodePage 2个键名,就是 IE 浏览器字符编码的相关设定键。
其中:AutoDetect 是表示自动侦测字符编码的意思。同 IE 浏览器“查看”菜单的“编码”中的“自动选择”(如图)。键值设置1,表示启用自动侦测。一般的,简体中文的操作系统,IE 浏览器就会使用 GB2312 去显示那些没有指定字符编码的页面。如果 AutoDetect 设置为0,那浏览器会去使用 Default_CodePage 的设定来显示页面。
因此,我们在简体中文的操作系统上打开简体中文的 CHM 文档出现乱码时,把 AutoDetect 设置为1就能正常显示;在简体中文的操作系统上打开繁体中文的 CHM 文档出现乱码时,先把 AutoDetect 设置为0,然后把 Default_CodePage 设置为 BIG5 的代码页 950 即可。
在乱码的页面,单击右键,选择源,可以把源文件另存为html文件,用ie,opera或firefox打开,完美显示,无需设置编码,但挺麻烦。
回复删除