首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以阻止Genshi解析HTML实体吗?

可以阻止Genshi解析HTML实体吗?
EN

Stack Overflow用户
提问于 2009-10-12 16:42:35
回答 3查看 1.5K关注 0票数 3

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

代码语言:javascript
复制
with open(pathToHTMLFile, 'r') as f:
    template = MarkupTemplate(f.read())
finalPage = template.generate().render('html', doctype = 'html')

源HTML文件包含©™®等实体。Genshi将它们替换为UTF-8字符,这会导致查看器出现问题(输出用作独立文件,而不是对web请求的响应),最终会看到生成的HTML。有什么方法可以阻止Genshi解析这些实体吗?像&这样的更常见的函数可以很好地通过。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-12 17:25:43

实际上&不会被传递,它会被解析成一个“与”字符,然后在输出时被序列化回&,因为这是在HTML语言中表示文字“和”所必需的。另一方面,©不是必需的转义,因此可以将其保留为原义字符。

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

代码语言:javascript
复制
template.generate().render('html', doctype= 'html', encoding= 'us-ascii')

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

票数 9
EN

Stack Overflow用户

发布于 2010-04-16 11:02:04

卡住

代码语言:javascript
复制
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

在你的超文本标记语言的<head>中应该能使浏览器正确地呈现UTF-8。

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

票数 3
EN

Stack Overflow用户

发布于 2013-12-08 17:29:48

要防止在Genshi中转义(x)html标记字符,请执行以下操作:

代码语言:javascript
复制
from genshi.core import Markup
...
newstring = Markup(oldstring)
...
<now apply templates as before, but substituting newstring for oldstring>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1555644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档