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

Php 在mysql数据库中存储特殊的utf字符,php,mysql,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 o

我从我正在使用的一个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!
该表设置为以下配置:


我做错了什么?

MySQL
utf8
字符集只支持BMP(基本多语言平面),代码点
U+0000
U+D7FF

显示的unicode点(
U+D83D
U+DC51
)形成一个代理项对,用于编码补充字符。在MySQL文档中,关于utf8的支持:

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

参考:

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



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

您不一定做错了什么;您描述的行为就是我们期望的行为,因为MySQL
utf8
characterset只支持基本多语言平面中的字符,不支持补充字符。另外相关: