3

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

我有一个具有“长文本”列的 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”。

4

1 回答 1

6

答: Django 使用“utf-8”作为数据库的默认字符集,因此如果您的数据库使用任何其他字符集(大多数旧数据库将配置为“latin1”),那么需要在数据库设置下明确提及该字符集。设置例如:

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

干杯!!!

于 2014-02-25T18:14:21.317 回答