2014-11-04 92 views
0

我從API的一個如下回應我使用:存儲特殊UTF字符

\ud83d\udc51 CODE :: davon top\n\ud83d\udc51 MATERIAL :: spandek rayon\n\ud83d\udc51 PRICE :: 70.000\n\nFIX ORDER langsung hubungi contact :\n\ud83d\udc49 LINE : hijabroom\n\ud83d\udc49 PIN BB : 28EFA80B\nRead mekanisme before order!\n\n 

我想保存這裏面mysql數據庫,但是當我看到這在我的數據庫是存儲爲:

? CODE :: davon top 
? MATERIAL :: spandek rayon 
? PRICE :: 70.000 

FIX ORDER langsung hubungi contact : 
? LINE : hijabroom 
? PIN BB : 28EFA80B 
Read mekanisme before order! 

表被設定爲如下配置:

enter image description here

我在這裏做錯了什麼?

+0

你不一定會做錯任何事;您描述的行爲是我們期望的行爲,因爲MySQL'utf8'字符集僅支持Basic Multilingual Plane中的字符,不支持補充字符。 – spencer7593 2014-11-04 03:51:07

+0

也相關:http://stackoverflow.com/questions/9509668/iphone-emoticons-insert-into-mysql-but-become-blank-value/ – deceze 2014-11-04 05:11:23

回答

0

MySQL utf8字符集僅支持BMP(基本多語言平面),代碼點U+0000U+D7FF

您顯示的Unicode代碼點(U+D83DU+DC51)形成代理對,用於編碼補充字符。從MySQL文檔utf8支持:

不支持補充字符(僅限BMP字符)。

參考:http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8.html

(你得到的問號的原因是因爲這是爲無法轉換的代碼點的默認字符)


的MySQL 5.5引入了utf8mb4字符集,它能夠存儲補充字符。