UnicodeDecodeError:'ascii'编解码器无法解码字节0xc5

时间:2013-09-18 16:31:38

标签: python python-2.7 mod-wsgi mako

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 537: ordinal not in range(128), referer: ...

当我尝试使用字符“č”输出整个网站时,我总是收到此错误。我正在使用mako模板。怎么办?

4 个答案:

答案 0 :(得分:9)

发生错误是因为某处代码将您的unicode模板字符串强制转换为python 2 str;您需要自己将呈现的模板编码为UTF-8字节串:

if isinstance(rendered, unicode):
    rendered = rendered.encode('UTF-8')

# rendered is now guaranteed to be of type str

答案 1 :(得分:0)

问题是你的代码因为超过8位而无法解码某些字符,所以尝试使用它:

converted = unicode("your_string", encoding="utf-8", errors="ignore")
祝你好运

答案 2 :(得分:0)

确保您使用正确的区域设置运行脚本,例如

$ locale -a | grep "^en_.\+UTF-8"
en_GB.UTF-8
en_US.UTF-8
$ export LC_ALL=en_GB.UTF-8
$ export LANG=en_GB.UTF-8

文档:man localeman setlocale

对于Linux,还要安装语言包,例如sudo apt-get install language-pack-en

答案 3 :(得分:-1)

您可以使用以下代码替换您的特殊字符č:č

"your string".replace('č','č')

如果您在网站上工作,可以为所有特殊字符创建一个sanytize函数。