4

我在GitHub Pages上使用Jekyll来运行我的博客

似乎 Jekyll(半)随机错误地将 XML 特殊字符转义为&tt;.

例如,在当前版本的 RSS 提要中,此源 XML

</p>
<p>

一个地方变成

&lt;/p&gt;
&lt;p&tt;

但它应该是

&lt;/p&gt;
&lt;p&gt;

&tt;是一个无效的 XML 实体引用,因此一些 XML 解析器对此感到窒息并拒绝继续。

起初我怀疑源中那个地方有一个不可见的无效字符,但据我所知,情况并非如此。更重要的是,这种行为似乎并不一致:

RSS feed目前有7个这样的错误,以上是第一个。但是,目前的Atom 提要只有 5 个这样的错误,而且它们不在同一个地方。不仅<p>标签受到影响,其他标签也受到影响(例如,<ul>标签应始终转义为&lt;ul&gt;,但在一个地方而不是转义为&tt;ul&gt;)。

此外,当我跑步时

jekyll 服务 -w

在我的本地机器上,我仍然看到相同类型的错误,但不是在相同的地方。

HTML 是这样转义的 XML:

{{ post.content | xml_escape }}

为什么会发生这种情况,我该怎么办?

4

1 回答 1

3

唯一要做的xml_escape是 call CGI::escapeHTML,它将某些字符替换为对应的字符。如果错误出现在 Jekyll 中,那只是因为它出现在您的 Ruby 的 CGI 模块版本中。

于 2013-12-22T19:36:54.267 回答