2013-01-09 65 views
0

我試圖使用Django保存以下字符串,MySQL數據庫(我從別的地方字符串)保存的Unicode數據庫

m.cr1 = u"\U0001F3C9" # cr1 is models.CharField(max_length=50) 
m.save() 

我得到的錯誤

Warning: Incorrect string value: '\xF0\x9F\x8F\x89' for column 'cr1' at row 1 

我已經在這裏查看了其他相關的問題,並將mysql更改爲utf8_unicode_ci,但這沒有幫助。一般來說,我的代碼適用於unicode,但不適用於此特定情況。

我想這與32位unicode這個事實有關。

我其實只是想檢測這種情況,也許忽略不好的字符。

任何想法?

感謝

+0

這[post](http://mathiasbynens.be/notes/mysql-utf8mb4)也可能對您有所幫助。 – doru

回答

2

MySQL的utf8是不是真正的UTF-8,但修改的一個僅支持代碼點數可達0xFFFF。您正在嘗試使用未包含在MySQL utf8中的代碼點(0x1F3C9>0xFFFF)。

您需要擁有較新版本的MySQL,並將utf8更改爲utf8mb4。到處。

連接需要是utf8mb4,排序規則,表/列等。你在MySQL環境中的任何地方都有utf8是錯誤的,並且需要是utf8mb4

+0

許多感謝。我現在有Django的問題,我會看看他們。 – eran