我正在为mySQL数据库使用utf8mb4编码。 即使使用西里尔字符,我的所有Django应用程序都能正常工作。
但是当我运行./manage.py test <module>
并尝试加载从同一数据库转储的夹具时,我得到有关编码的错误。其中一个错误是:
Could not load advert.Region(pk=1): (1366, "Incorrect string value: '\\xD0\\x9F\\xD0\\xBB\\xD0\\xBE...' for column 'region_name' at row 1")
然后我在Django设置中设置DEFAULT_CHARSET并将错误更改为
LookupError: Problem installing fixture '<path>/test_db_one.xml': unknown encoding: utf8mb4
正如您所看到的,我已将fixture的格式指定为XML,因为它可以更好地处理编码。
我的设置模块具有以下属性:
DEFAULT_CHARSET = 'utf8mb4'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'autoplusplus_dev',
'USER': 'autoplusplus_django',
'PASSWORD': '1029',
'HOST': 'localhost',
'PORT': '3306',
'STORAGE_ENGINE': 'INNODB',
'OPTIONS': {'charset': 'utf8mb4'},
'TEST_CHARSET': 'utf8mb4',
}
}
我安装了mysqlclient 1.3.12
答案 0 :(得分:1)
事实证明,将Django自身生成的文件的编码更改为UTF-8可以解决问题。
答案 1 :(得分:0)
您期待Пло
?如果是这样,那就是合理的UTF-8编码。
&#34;未知编码:utf8mb4&#34; - 你有Django和/或MySQL的古董版本?你在运行什么版本?
表格定义是什么样的?可能列是latin1
而不是utf8
或utf8mb4
。
同时,使用MySQL&#39; CHARACTER SET utf8
;这个可能让你去。