3

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')も機能しません。

4

2 に答える 2

3

'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データベースの文字セットの問題

于 2013-03-27T07:52:41.607 に答える
1
u = unicode(name,'latin-1')
print u.encode('utf-8')
于 2013-03-27T06:11:50.537 に答える