2011-08-23 22 views
1

我已經使用UTF8編碼將一些數據上傳到MySQL(5.5.15 for osx10.6)數據庫,但由於某些原因,我必須在latin1時指定它的編碼加載了它。告訴MySQL連接使用UTF-8和Django

我認爲這部分是好的,因爲當我寫入OUTFILE時,我的unicode'nu'字符在終端和Vim中出現。但是,當我在MySQL會話中查看它們時,以及當我嘗試從Django admin編輯字段時,會出現重疊字符(latin1?)。

因此,我的問題是:如何告訴MySQL客戶端和(特別是)Django以UTF-8的方式讀取我的數據庫?

在命令行中,我試圖

--default_character_set=utf8 

'SET NAMES UTF8;' 

在MySQL提示符,但他們沒有工作。

當我看着VARIABLES LIKE'char%'時,它們都被設置爲utf8,與character_set_server是latin1。如果我將它設置爲utf8 ....那也行不通。

如果有人能夠給我一些指示,特別是關於如何配置Django與我的數據庫正確對話,我將不勝感激。

謝謝!

+0

你的意思是你有,當你裝好了指定LATIN1?通常情況下,您應該在創建數據庫時指定UTF-8:「CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;」 –

+0

數據庫本身是UTF-8,整理utf_unicode_ci,但如果我LOAD DATA LOCAL INFILE''INTO TABLE CHARACTER SET utf8我收到問號,並根據互聯網上其他各種職位,它似乎只上傳與如果我指定(不正確)'CHARACTER SET latin1',則爲正確的編碼。很混亂。 – xnx

回答

2

添加在您的.cnf

[mysqld] 
character-set-server = utf8 
collation-server  = utf8_general_ci 
skip-character-set-client-handshake 
+0

我在/etc/my.cnf中有這個(使用utf_unicode_ci作爲collat​​ion_server),但它似乎不起作用(儘管它確實將character_set_server設置爲utf8)。我很困惑... – xnx

+0

你是怎麼安裝MySQL的?我懷疑它使用其他'/ etc/my.cnf'配置文件。 – sanmai