python - 从 MYSQL 读取模型时出现 DjangoUnicodeDecodeError

标签 python mysql django unicode

好吧,我被难住了。我有一个非常简单的 Django 模型数据库查询,如下所示:

items=models.Item.objects.all()

一旦我尝试运行它,我就会得到一个异常:

DjangoUnicodeDecodeError:'utf8' 编解码器无法解码位置 1 中的字节 0xe4:无效的连续字节。你传入了 'E\xe4I\n\x01\x80\xc0\xc9\xa3\xd0-m\xd1c%\x7f' ()

Item 模型没有什么特别复杂的地方。我进入 MYSQL 并运行 show table status,所有表都使用 utf8_general_ci 排序规则。我不知道如何解决这个问题。有什么想法吗?

我还应该提到,我在一些运行 Django 模型管理命令的代码中运行它。换句话说,在我的 models/management/commands 文件夹中,我有一个 python 文件(比如 do_stuff.py),我用 ./manage.py do_stuff 执行它。所以这一切都是从命令行运行的,即不涉及浏览器,没有模板等。只是一个自定义的 Djanago 命令。

最佳答案

我不是 unicode 专家,但您的数据似乎不是 utf-8,而是 utf-16。

你可以试试:

In [10]: b = b'E\xe4I\n\x01\x80\xc0\xc9\xa3\xd0-m\xd1c%\x7f'

In [11]: b.decode('utf-8')
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-11-dbeeccecf491> in <module>()
----> 1 b.decode('utf-8')

/usr/lib/python2.7/encodings/utf_8.pyc in decode(input, errors)
     14 
     15 def decode(input, errors='strict'):
---> 16     return codecs.utf_8_decode(input, errors, True)
     17 
     18 class IncrementalEncoder(codecs.IncrementalEncoder):

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe4 in position 1: invalid continuation byte

In [12]: print b.decode('utf-16')
੉老지킣洭揑缥

关于python - 从 MYSQL 读取模型时出现 DjangoUnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800844/

相关文章:

python - 单击 Selenium 中的链接后让 Firefox 等待新页面加载?

sql - 将 MS SQL 脚本转换为 Mysql 和 Oracle

python - 如何在本地运行 OpenShift Django 项目?

python - Django 排除子查询中的多个字段

python - 服务器基础设施、文件上传项目

Python调试

Python 精度处理

python - 如何根据多个条件在 df 中创建新列?

php - 如何在MySQL中使用LIKE?

php - 使用 CSS 和 PHP/MySQL 的动态下拉菜单