2012-12-14 16 views
1

我該如何讓MySQL InnoDB支持新的Unicode字符集,如\U0001f3b8我該如何讓MySQL innoDB支持新的unicode字符集,如' U0001f3b8'

字符\U0001f3b8是一個GUITAR它是由iPhone的輸入法生成的。

的問題是,它不能被保存在MySQL數據庫。

保存的列類型是VARCHAR,我一直試圖更改爲TEXT,仍然無法正常工作。

唯一的例外是:

警告:不正確的字符串值: '\ XF0 \ x9F \ x8E \ XB8' 列 '消息',第1行

BTW:我的工作環境是python + Django

+0

哈......我找到了解決這個問題的另一種方法。使用simplejson.dumps(),它會將\ U0001f3b8轉換爲utf8代碼(如:\ xxxx \ xxxx)。那麼我可以在翻譯後保存它。 – bigbigtooth

回答

1

我假設新的Unicode字符集意味着完整的UTF-8支持。您需要將表格/列歸類更改爲包含utf8mb4編碼的歸類。很好的舊版本utf8在一個不完整的實現中只支持三個字節。你需要MySQL/5.5。

+0

無需假設:['U + 1f3b8'](http://www.fileformat.info/info/unicode/char/1f3b8/)是一個表情符號字符(在[雜符號和象形文字](HTTP:/ /www.fileformat.info/info/unicode/block/miscellaneous_symbols_and_pictographs/)塊[補充多語種平面](http://en.wikipedia.org/wiki/Supplementary_Multilingual_Plane#Supplementary_Multilingual_Plane)),因此,如問題所示用UTF-8中的四字節序列「0xf09f8eb8」表示。 – eggyal

+0

@eggyal - 我猜是因爲這個問題甚至沒有提到UTF-8。 –

+0

感謝您的回答。我們的MySQL是5.1,現在我知道5.5可以解決這個問題,但由於歷史原因我無法升級它。 – bigbigtooth