在mysql数据库中存储特殊的utf字符

时间:2014-11-04 03:11:33

标签: php mysql

我正在使用以下API之一的响应:

\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

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

MySQL utf8 characterset仅支持BMP(基本多语言平面),代码点U+0000U+D7FF

您显示的unicode点(U+D83DU+DC51)形成代理对,用于编码补充字符。从关于 utf8 支持的MySQL文档:

不支持补充字符(仅限BMP字符)。

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

(你得到问号的原因是因为这是无法翻译的代码点的默认字符。)


MySQL 5.5引入了 utf8mb4 characterset,它能够存储补充字符。