2010-04-22 64 views
15

爲什麼MySQL不存儲unicode字符?是的,這是一種罕見的象形文字,你不會在瀏覽器中看到它。
UTF16是U+2B5EEMySQL不想存儲unicode字符

Warning: #1366 Incorrect string value: '\xF0\xAB\x97\xAE' for column 'ch' at row 1 

是否有可能存儲在MySQL這個角色?

+0

你可能想檢查這個http://bugs.mysql.com/bug.php?id=14052它似乎有關。 – xycf7 2010-04-22 15:49:31

回答

14

MySQL僅支持基本多語言平面中的字符(0x0000 - 0xFFFF)。

如果你是這架飛機,你的角色就出來了。

嘗試存儲的代名詞,而不是:)

更新:

MySQL 5.5.3和(這並非沒有GA還)如果你使用UTF8MB4 encoding支持增補字符。

+0

MySQL中的utf8已經有了數天的麻煩。現在我知道爲什麼了!謝謝! – 2012-01-24 12:26:45

2

首先:你的說法

UTF-16是U + 2B5EE

稍有不當。 U+2B5EE是Unicode 代碼點的表示法,只是一個整數 - 一個抽象代碼 - 而UTF16是一個charset編碼(可能的Unicode編碼之一,正如UTF-8)。現在

,假設你指的是代碼點,U+2B5EE是BMP(第一個64K Unicode代碼點)之外,它似乎MySQL的有little or no support for them。所以我懷疑你運氣不好。

1

由於此問題發佈,MySQL 5.5.3發佈,支持utf8mb4編碼,它提供了完整的Unicode支持。切換到此字符集而不是utf8將解決您的問題。我最近寫過a detailed guide on how to switch from MySQL’s utf8 to utf8mb4。如果你按照那裏的步驟,一切都應該正常工作。這裏是直接鏈接到在這個過程中每個步驟都會:

我懷疑你的問題可以通過以下步驟5來解決。希望這有助於!