网上多见用MS HHW制作CHM时,会出现图片不能显示,也就是图片没有导入到编辑后的chm的情况,很不幸,我也遇到了。
到处找啊找,没找到和我问题一样的。
不过找个一个信息说,HHW只需要导入html文件,它会自动在文中搜寻图片和其他链接文件,然后自动加入编译后的chm中。
看到这儿我灵光一闪,是不是HHW无法找到我的图片文件呢?在HHW中预览我的html时,页面是乱码的。
这样想下来,问题清楚了——
HHW中的html预览功能,会自动根据设定的language来决定它所采用的代码页,“language=中国”情况下为ANSI(windows系统默认),而我的html是UTF-8无BOM,因此会乱码。
HHW会根据其预览代码中的资源链接,来读取资源进行编译,因此路径含中文、以及我下面的情况都不会正常显示:
我在<img>标签内的 alt 属性中有Unicode字符,紧接着 src 属性,使其变成了:
<img alt="濮嫨銈娿儉銉炽偢銉с兂銉炪偆銈广偪銉? src="image/imagetop.jpg" />
显然 src 不能被正确读取。
解决方法为:
一是 统一用GB32字符集和ANSI编码,不需要其他语言和特殊字符的可以用这一方法;
二是 检查html中的资源链接,确保能被正确读取。因为HHW虽然不支持Unicode,但CHM是用的IE内建字符集,所以可以正常显示。需要用Unicode字符的可以用这个方法。
确保资源链接有效的一个好的代码编写习惯是,将scr href等等属性紧接在html标签之后,当然,如果是修改已存在的html,则可以将多余的属性删除。