3

我有以下使用 Genshi 的 Python 代码(简化版):

with open(pathToHTMLFile, 'r') as f:
    template = MarkupTemplate(f.read())
finalPage = template.generate().render('html', doctype = 'html')

©源 HTML 文件包含实体,例如™®。Genshi 用它们的 UTF-8 字符替换这些字符,这会导致查看器出现问题(输出用作独立文件,而不是对 Web 请求的响应),最终查看生成的 HTML。有什么办法可以阻止 Genshi 解析这些实体?比较常见的&通过就好了。

4

3 回答 3

9

实际上&并没有通过,它被解析成一个 & 字符,然后&在输出时序列化回,因为这是在 HTML 中表示文字 & 所必需的。©另一方面,它不是必要的转义,因此可以保留其文字字符。

所以不,没有办法阻止实体引用被解析。但是您可以通过序列化为纯 ASCII 来确保在返回的途中重新转义非 ASCII 字符:

template.generate().render('html', doctype= 'html', encoding= 'us-ascii')

您仍然不会©在输出中获得实体引用,但您将获得©等效的字符引用,希望显示最终文件的任何内容都能理解。

于 2009-10-12T17:25:43.473 回答
3

坚持

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<head>您的 HTML 中应该会导致浏览器正确呈现 UTF-8。

澄清一下,根本问题是相应的 © UTF-8 字符在静态 HTML 中无法正确呈现。将元标记放在 HTML 中告诉浏览器如何正确解释字符集,从而正确呈现 UTF-8 字符。

于 2010-04-16T03:02:04.283 回答
0

为了防止在 Genshi 中转义 (x)html 标记字符:

from genshi.core import Markup
...
newstring = Markup(oldstring)
...
<now apply templates as before, but substituting newstring for oldstring>
于 2013-12-08T09:29:48.073 回答