Python / Mako:如何正确解析unicode字符串/字符?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python / Mako:如何正确解析unicode字符串/字符?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1759字,纯文字阅读大概需要3分钟。
内容图文
![Python / Mako:如何正确解析unicode字符串/字符?](/upload/InfoBanner/zyjiaocheng/652/9d20165254194c178f5e9f75bd8155a1.jpg)
我试图让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)
我认为字符串本身没有任何问题,因为我可以很好地打印它.
尽管我在输入/ 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 ma?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 / Mako:如何正确解析unicode字符串/字符?全部内容,希望文章能够帮你解决Python / Mako:如何正确解析unicode字符串/字符?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。