CHM 的实质是 HTML 文件。通常状况下没有指定字符编码的 CHM 是调用 Internet Explorer 浏览器的字符编码设定来显示 CHM 文件的。
在注册表 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 便可。
简体中文Windows经常使用 ANSI 代码页936,在注册表二进制值是 A8 03 00 00;繁体中文Windows经常使用 ANSI 代码页950,在注册表二进制值是 B6 03 00 00;拉丁语系Windows经常使用 ANSI 代码页1252,在注册表二进制值是 E4 04 00 00