我在
GitHub Pages使用
Jekyll运行
my blog.
似乎Jekyll(半)随机错误地将XML转义为XML特殊字符& tt;.
例如,在当前版本的the RSS feed中,这个源XML
</p>
<p>
在一个地方成为
</p>
<p&tt;
但应该是
</p>
<p>
&安培; TT;是一个无效的XML实体引用,因此一些XML解析器会阻塞它并拒绝继续.
起初我怀疑在源头的那个地方有一个看不见的无效字符,但据我所知,情况并非如此.更重要的是,这种行为似乎并不一致:
RSS提要目前有7个这样的错误,其中上面是第一个.但是,目前的Atom feed只有5个这样的错误,并且它们不在同一个地方.它不仅仅是< p>受影响的标签,但其他标签也是如此(例如,< ul>标签应该总是作为& lt; ul& gt;转义,但是在一个地方而不是作为& tt; ul& gt;进行转义).
而且,当我跑
jekyll serve -w
在我的本地机器上,我仍然看到相同类型的错误,但不是在同一个地方.
HTML是XML转义如下:
{{ post.content | xml_escape }}
为什么会发生这种情况,我该怎么办呢?
最佳答案 xml_escape唯一能做的就是调用
CGI::escapeHTML
,它会将某些字符替换为对应的字符.如果Jekyll中存在错误,那只是因为它存在于您的Ruby的CGI模块版本中.