我有使用元史以下Python代码(简化的):

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

在源HTML文件中包含的实体,如©™®。元史与他们的UTF-8字符,这会导致问题与观看者(输出被用作一个独立的文件,而不是到网络请求的响应),最终看到所得到的HTML替换这些。有什么办法来防止元史通过解析这些实体?像&较为常见的是通过就好通过。

有帮助吗?

解决方案

实际上&通过不通过,它解析成一个符号字符,然后串行化回的出路&因为这是必要的,以表示HTML文字符号。 ©,在另一方面,是不是一个必要的逃逸,因此它可以被留作为其文字字符。

因此,没有,没有办法的停止的实体引用被解析。但是你可以确保背出由连载于普通的ASCII非ASCII字符的方式重新转义:

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

您仍然不会得到实体引用©在你的输出,但你会得到字符引用©这相当于,而且会以任何显示的是最终的文件可以理解的。

其他提示

敷贴

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

在HTML的<head>应导致浏览器正确地呈现UTF-8。

要澄清,根的问题是,相应的©UTF-8字符不在静态HTML正确呈现。正确地放置在HTML元标记告诉浏览器如何正确地解释的字符集,从而使得该UTF-8字符。

要防止在元史的(X)HTML标记字符转义:

from genshi.core import Markup
...
newstring = Markup(oldstring)
...
<now apply templates as before, but substituting newstring for oldstring>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top