- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试让 Mako 渲染一些带有 unicode 字符的字符串:
tempLook=TemplateLookup(..., default_filters=[], input_encoding='utf8',output_encoding='utf-8', encoding_errors='replace')
...
print sys.stdout.encoding
uname=cherrypy.session['userName']
print uname
kwargs['_toshow']=uname
...
return tempLook.get_template(page).render(**kwargs)
相关模板文件:
...${_toshow}...
输出是:
UTF-8
Deşghfkskhü
...
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 1: ordinal not in range(128)
我认为字符串本身没有任何问题,因为我可以很好地打印它。
虽然我玩过(很多)input/output_encoding
和 default_filters
参数,它总是提示无法使用 ascii 编解码器解码/编码。
所以我决定尝试在 documentation 上找到的示例,以下是“最佳”作品:
input_encoding='utf-8', output_encoding='utf-8'
#(note : it still raised an error without output_encoding, despite tutorial not implying it)
与
${u"voix m’a réveillé."}
结果是
voix mâ�a réveillé
我只是不明白为什么这行不通。 “魔术编码注释”也不起作用。所有文件均使用 UTF-8 编码。
我已经花了几个小时无济于事,我是不是漏掉了什么?
<罢工>更新:
我现在有一个更简单的问题:
既然所有变量都是 unicode,我怎样才能让 Mako 在不应用任何东西的情况下呈现 unicode 字符串?传递空白过滤器/render_unicode() 没有帮助。
最佳答案
是的,UTF-8 != Unicode。
UTF-8 是一种特定的字符串编码,ASCII 和 ISO 8859-1 也是如此。试试这个:
对于任何输入字符串执行 inputstring.decode('utf-8')
(或您获得的任何输入编码)。对于任何输出字符串,执行 outputstring.encode('utf-8')
(或您想要的任何输出编码)。对于任何内部使用,采用 unicode 字符串('这是一个普通字符串'.decode('utf-8') == u'这是一个普通字符串'
)
'foo'
是一个字符串,u'foo'
是一个 unicode 字符串,它“没有”编码(无法解码)。所以任何时候python想要改变一个普通字符串的编码,它首先尝试“解码”它,然后“编码”它。默认是“ascii”,它经常失败:-)
关于 python /灰鲭鲨 : How to get unicode strings/characters parsed correctly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3744115/
我是一名优秀的程序员,十分优秀!