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

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

当我尝试输出包含 "č" 字符的整个网站时,经常会遇到这个错误。我正在使用 mako 模板。该怎么办?


可能是重复的问题Python, UnicodeDecodeError - Ulrich Eckhardt
4个回答

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

0
问题是你的代码无法解码一些字符,因为它们超过了8位,请尝试使用以下方法:
converted = unicode("your_string", encoding="utf-8", errors="ignore")

祝好运


不幸的是,这正好与 OP 需要做的相反。 - Antti Haapala -- Слава Україні
我很抱歉,亲爱的安蒂。我认为我确切地写出了属于答案的解决方案。他希望他的代码跳过超过一个字节的Unicode字符,这就是确切的解决方案 :) - Mojtaba Yousefi

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


-1

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

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

如果你正在开发一个网站,你可以创建一个过滤函数来处理所有特殊字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接