的UnicodeDecodeError

时间:2013-04-14 06:27:05

标签: python django

我收到了UnicodeDecodeError,

'utf8' codec can't decode byte 0xe5 in position 1923: invalid continuation byte

我在模板中使用丹麦字母“å”。如何解决问题,然后我可以在我的Django项目和数据库中使用非英文字母?

2 个答案:

答案 0 :(得分:2)

我可以得到类似的错误(提到相同的字节值):

>>> 'å'.encode('latin-1')
b'\xe5'
>>> _.decode('utf-8')
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    _.decode('utf-8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 0: unexpected end of data

这意味着您的数据以latin-1而不是utf-8编码。通常,有两种解决方案:如果您可以控制输入数据,请将其重新保存为UTF-8。否则,当您在Python中读取数据时,请将编码设置为latin-1。对于django模板,您应该能够使用第一个 - 您使用的编辑器应该在某处具有'encoding'选项,将其更改为utf-8,重新保存,并且一切都应该有效。

答案 1 :(得分:0)

这帮助了我https://stackoverflow.com/a/23278373/2571607

基本上,打开C:\ Python27 \ Lib \ mimetypes.py

替换

‘default_encoding = sys.getdefaultencoding()’

if sys.getdefaultencoding() != 'gbk':  
    reload(sys)  
    sys.setdefaultencoding('gbk')  
default_encoding = sys.getdefaultencoding()