我有以下使用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解析这些实体吗?像&这样的更常见的函数可以很好地通过。
发布于 2009-10-12 17:25:43
实际上&不会被传递,它会被解析成一个“与”字符,然后在输出时被序列化回&,因为这是在HTML语言中表示文字“和”所必需的。另一方面,©不是必需的转义,因此可以将其保留为原义字符。
所以,没有办法阻止实体引用被解析。但您可以通过序列化为普通ASCII来确保非ASCII字符在返回时重新转义:
template.generate().render('html', doctype= 'html', encoding= 'us-ascii')您仍然不会在输出中获得实体引用©,但是您将获得等效的字符引用©,并且有望被显示最终文件的任何内容所理解。
发布于 2010-04-16 11:02:04
卡住
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />在你的超文本标记语言的<head>中应该能使浏览器正确地呈现UTF-8。
为了澄清,根本问题是对应的©UTF-8字符无法在静态HTML中正确呈现。在HTML中放置meta标记将告诉浏览器如何正确解释字符集,从而正确呈现UTF-8字符。
发布于 2013-12-08 17:29:48
要防止在Genshi中转义(x)html标记字符,请执行以下操作:
from genshi.core import Markup
...
newstring = Markup(oldstring)
...
<now apply templates as before, but substituting newstring for oldstring>https://stackoverflow.com/questions/1555644
复制相似问题