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® 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&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&w=cerveza">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Welcome">
<param name="Local" value="index.htm">
</OBJECT>
</UL>
</BODY></HTML>
因此,您可以使用正则表达式和您喜欢的文本编辑器搜索 &
并将其替换为 &
,如上所示。使用 %26
导致服务器错误,使用编译帮助文件 (*.CHM) 中的示例 URL。
请注意 - 正如您已经看到的,HTMLHelp Workshop 打开 index.hhk
会再次缩短 URL。所以你需要清理你的 index.hhk
然后立即编译而不打开你的 index.hhk
.
如下图所示,它生成了一个满足您需要的内容窗格。
我正在构建一个包含许多外部链接的 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.
有办法解决这个问题吗?
我尝试使用 %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® 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&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&w=cerveza">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Welcome">
<param name="Local" value="index.htm">
</OBJECT>
</UL>
</BODY></HTML>
因此,您可以使用正则表达式和您喜欢的文本编辑器搜索 &
并将其替换为 &
,如上所示。使用 %26
导致服务器错误,使用编译帮助文件 (*.CHM) 中的示例 URL。
请注意 - 正如您已经看到的,HTMLHelp Workshop 打开 index.hhk
会再次缩短 URL。所以你需要清理你的 index.hhk
然后立即编译而不打开你的 index.hhk
.
如下图所示,它生成了一个满足您需要的内容窗格。