2013-03-27 37 views
2

的Django模型UTF8我有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')不工作要麼。

+0

它的Latin-1,你爲什麼需要將其更改爲UTF-8? – 2013-03-27 04:32:31

+0

這應該是一些中國文字。如果latin1顯示一些亂碼文本。 – wjheng 2013-03-27 05:59:02

回答

2

如果您可以訪問您的「settings.py」文件,那麼你可以更改設置說,數據庫是使用「latin1的」。

以下是在「settings.py」文件中的「數據庫」配置的示例。

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

+0

感謝。這工作。但是你有沒有想法如何設置單個表格的字符集?一些表使用latin1,一些使用utf-8。 – wjheng 2013-03-27 08:08:24

+0

AFAIK Django不支持對單個表設置的字符集。但我想有一些辦法可以做到這一點。 – 2013-03-27 09:11:17

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