我有一個用Django寫的項目。這應該存放一些字符串中的所有領域都應該是UTF-8,但是,當我運行如何在django中設置表格char列的編碼?
manage.py syncdb
所有各列與CP1252字符集創建(在哪裏得到它 - 我沒有想法),我必須手動更新每一列...
有沒有辦法讓Django在第一時間創建所有那些使用UTF-8編碼的列?
順便說一句,我使用MySQL。
我有一個用Django寫的項目。這應該存放一些字符串中的所有領域都應該是UTF-8,但是,當我運行如何在django中設置表格char列的編碼?
manage.py syncdb
所有各列與CP1252字符集創建(在哪裏得到它 - 我沒有想法),我必須手動更新每一列...
有沒有辦法讓Django在第一時間創建所有那些使用UTF-8編碼的列?
順便說一句,我使用MySQL。
Django在CREATE TABLE
語句中未指定字符集和歸類。一切都由數據庫字符集決定。做ALTER DATABASE ... CHARACTER SET utf8 COLLATE utf8_general_ci
運行前syncdb
應該有所幫助。
對於連接,Django自動發出SET NAMES utf8
,因此您不必擔心默認連接字符集設置。
Django的數據庫後端會自動將Unicode字符串處理爲適當的編碼並與數據庫交談。你不需要告訴Django你的數據庫使用了什麼編碼。它通過使用數據庫的編碼來處理它。
我看不出有什麼辦法可以告訴django使用某些特定的編碼創建一列。 在我看來,絕對有一些以前的MySQL配置會影響你。 儘管對所有色譜柱進行手動操作,但請使用這些色譜柱。
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
什麼是你的MySQL編碼設置爲?
例如,嘗試從以下命令行:
mysqld --verbose --help | grep character-set
如果沒有輸出UTF8,那麼你就需要設置在my.cnf輸出:
[mysqld]
character-set-server=utf8
default-collation=utf8_unicode_ci
[client]
default-character-set=utf8
這個頁面有一些更多的信息:
如果我沒有弄錯,Django已經連接了SET NAMES utf8。 – drdaeman 2009-07-29 08:00:26
它說latin1,所以cp1252是mysqladmin的問題。 您建議的這些設置似乎隻影響命令行客戶端 – 2009-07-29 08:15:40