尽管提供了一种使用过滤器对输出进行转义的好方法,但是它们都做不到正确的事情.
取字符串:
x=u"&\u0092"
过滤器执行以下操作:
x Turns the & into an entity but not the \u0092 (valid XML but not XHTML)
h Exactly the same
u Escapes both, but obviously uses url escaping
entities Only converts named entities, so again only the & is escaped
decode.latin1 The same
HTML uses the standard UNICODE Consortium character repertoire, and it leaves undefined (among others) 65 character codes (0 to 31 inclusive and 127 to 159 inclusive)
这些似乎是错过的角色.有任何想法吗?
编辑
似乎可以验证我是否离线使用文件.这可能是Content-Type问题吗?
解决方法:
不必将Unicode字符转换为& #xxxx;.表单,除非您有意使用ASCII字符集,否则都可以在HTML中使用.转义命名实体,然后将整个字符串编码为UTF-8并像这样写出来,更简单,更有效.您可能应该声明在HTTP标头或< meta>中使用的编码.标签.
编辑:
It seems to validate if I use the file offline. Could this be a Content-Type problem?
是.您可以使用HTTP标头来强制执行UTF-8字符集,也可以直接通过meta标记在HTML中指定它:
<meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />