Django数据库charset问题

时间:2012-12-03 15:47:44

标签: django django-models character-encoding

我有以下问题,经过一个小时的搜索,我没有得到适当的解决方案。

我有一个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'。

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,但我想不建议这样做。

干杯!!!