我收到一个 UnicodeDecodeError,
'utf8' codec can't decode byte 0xe5 in position 1923: invalid continuation byte
我在模板中使用了丹麦语字母“å”。我该如何解决这个问题,然后我可以在我的 Django 项目和数据库中使用非英文字母?
这样做我会得到一个类似的错误(提到相同的字节值):
>>> 'å'.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 模板,您应该能够使用第一个 - 您使用的编辑器应该在某处有一个“编码”选项,将其更改为 utf-8,重新保存,一切都应该工作。
这对我有帮助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()