我有以下问题,经过一个小时的搜索,我没有得到适当的解决方案。
我有一个MySQL数据库表,其中包含“长文本”列。要使用较少的空间存储该文本列中的文件内容,PHP中使用了以下压缩方法来存储内容。
$compressed_content = bzcompress($content);
$db_compressed_content = addslashes($compressed_content);
'db_compressed_content'使用PHP本身存储在数据库中。
现在我可以使用Django来利用数据库内容了。我能够拿出模型类来表示表格。 'TextField'用于表示该特定列。
这是我的确切问题,我使用python的'bz2.decompress()'进行解压缩并获取文本内容但是当我尝试这样做时,在django下得到'UnicodeEncodeError'。
仅供参考,用于使用PHP在数据库中存储内容的字符集是'latin-1'。
答案 0 :(得分:3)
答案: Django使用'utf-8'作为数据库的默认字符集,因此如果您的数据库使用任何其他字符集(主要是旧数据库将使用'latin1'配置),那么charset需要在数据库设置下明确提及。设置例如:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test_db',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
'OPTIONS': {
'charset': 'latin1',
'use_unicode': True, },
},
}
除此之外,如果您不需要使用unicode,那么您可以将'use_unicode'设置为False,但我想不建议这样做。
干杯!!!