Django模型utf8与遗留数据库

时间:2013-03-27 04:31:06

标签: django

我有一个带有latin1编码的旧数据库。我无权将其更改为utf8。当我从模型中读取值时,我的文本变得混乱。

我尝试使用name.decode('utf-8'),但它抛出了一个unicode错误:

 'ascii' codec can't encode characters in position 4-12: ordinal not in range(128)

name.encode('utf-8')也不起作用。

2 个答案:

答案 0 :(得分:2)

如果您有权访问'settings.py'文件,则可以更改设置,说明您的数据库正在使用'latin1'。

以下是'settings.py'文件中'DATABASES'配置的示例。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test_db',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '3306',
        'OPTIONS': {
                    'charset': 'latin1',
                    'use_unicode': True, },
    }, 
}

我之前有过类似的问题,请在此处查看链接Django database charset issue

答案 1 :(得分:1)

u = unicode(name,'latin-1')
print u.encode('utf-8')