【发布时间】:2011-04-14 05:36:34
【问题描述】:
我正在尝试让 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() 没有帮助。
【问题讨论】:
标签: python string unicode mako