UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 537: ordinal not in range(128), referer: ...
当我尝试使用字符“č”输出整个网站时,我总是收到此错误。我正在使用mako模板。怎么办?
答案 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 locale
,man setlocale
。
对于Linux,还要安装语言包,例如sudo apt-get install language-pack-en
。
答案 3 :(得分:-1)
您可以使用以下代码替换您的特殊字符č:č
"your string".replace('č','č')
如果您在网站上工作,可以为所有特殊字符创建一个sanytize函数。