CHM 外部 link 与符号

CHM external link with ampersand

我正在构建一个包含许多外部链接的 CHM 文件。这些链接在 <b>Index.hhk</b> 中,应该在 CHM 帮助中显示外部页面。

所有的链接都是这样的:<a href="http://dle.rae.es/srv/search?m=30&w=casa" rel="nofollow noreferrer">http://dle.rae.es/srv/search?m=30&w=casa</a>

如您所见,路径中有符号 <b>&</b>,显然 CHM 无法处理它。 HTML Help Workshop.

所有链接都被缩减为“http://dle.rae.es/srv/search?m=30?”

有办法解决这个问题吗?

我尝试使用 %26,但它不起作用。

这有点复杂,与 HTMLHelp Workshop 的行为有关。请记住,HTMLHelp(CHM's)已有将近 20 年的历史,而 Microsoft 基于 Windows 的帮助系统仅在 "maintenance mode" 中。某些字符以特殊方式处理,这会导致问题,尤其是文件名。

所以,例如井号 (#) 是用于超链接的注册字符。不能使用此字符(以及“?”、“&”和“+”字符)。这些都有特殊的意义。

我们现在应该解决您的问题,并为您的 index.hhk 和 HTMLHelp Workshop 提供解决方案。您可能知道 index.hhk 文件是一个文本文件(旧站点地图格式),可以使用 NotePad++

等纯文本编辑器进行编辑
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<OBJECT type="text/site properties">
    <param name="WindowName" value="Whosebug">
</OBJECT>
<UL>
    <LI> <OBJECT type="text/sitemap">
        <param name="Name" value="Ampersand-casa">
        <param name="Local" value="http://dle.rae.es/srv/search?m=30&amp;w=casa">
        </OBJECT>
            <LI> <OBJECT type="text/sitemap">
        <param name="Name" value="Ampersand-cerveza">
        <param name="Local" value="http://dle.rae.es/srv/search?m=30&amp;w=cerveza">
        </OBJECT>
    <LI> <OBJECT type="text/sitemap">
        <param name="Name" value="Welcome">
        <param name="Local" value="index.htm">
        </OBJECT>
</UL>
</BODY></HTML>

因此,您可以使用正则表达式和您喜欢的文本编辑器搜索 & 并将其替换为 &amp;,如上所示。使用 %26 导致服务器错误,使用编译帮助文件 (*.CHM) 中的示例 URL。

请注意 - 正如您已经看到的,HTMLHelp Workshop 打开 index.hhk 会再次缩短 URL。所以你需要清理你的 index.hhk 然后立即编译而不打开你的 index.hhk.

如下图所示,它生成了一个满足您需要的内容窗格。