问题描述
我有一个应用程序通过套接字与NodeJS服务器对话,该服务器通过HTTP与PHP对话,而PHP正在使用MySQL。
当我尝试在文本字段中插入表情符号并将其保存到数据库时,当我拿回它时,我看到"?"。
如果我从维基百科复制表情符号(例如?? ?? ??? ???)并强制它们到数据库,当我选择它们时,它会显示?? ?? ?? ??
注意:数据库中的字段为utf8mb4bin。
- 为什么我无法将表情符号直接从我的设备存储到数据库?
- 为什么有些表情包会显示,而另一些则不会?
注意:我也只尝试了PHP和MySQL,但没有成功。
推荐答案
1.)数据库: 将数据库默认集合更改为**utf8mb4**。
2)表: 将表集合更改为**字符集utf8mb4 COLLATE utf8mb4_bin**。Query : ALTER TABLE Tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
3)编码:
insert into tablename (column1,column2,column3,column4,column5,column6,column7) values ('273','3','Hdhdhdh????????hzhzhzzhjzj 我爱你 ?',49,1,'2016-09-13 08:02:29','2016-09-13 08:02:29')
4)在数据库连接中设置utf8mb4:
$database_connection = new mysqli($server, $user,$password,$database_name); $database_connection->set_charset("utf8mb4");