发送emoji到服务器需要对发送内容进行编码吗?
发布于 5 年前 作者 sujie 2322 次浏览 来自 问答

最近发现用户名和用户输入内容有???, 查了一下发现需要让mysql使用utf-8mb4来编码, 后端说数据库改了utf-8mb4, 但是还是不能发送.

请问需要对reqeust进行配置或者需要提前对表情进行编码么?

ps: 我尝试对表情进行编码为base64, 后端可以正常存储, 但每次发送和接收都需要编码解码, 效率低.

下面是后端返回的报错

1267:Illegal mix of collations 
(utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) 
for operation '=' [ SQL语句 ] 
: SELECT * FROM `pigcms_house_village_forum` WHERE `title` = '士大夫' AND `content` = '😒 ' LIMIT 1
3 回复

不需要做任何特殊的编码和配置,只需要修改mysql的读写编码,建议贵公司把现在这个不懂装懂的后端开了,重新招一个新的,拿这个做面试题

在mysql 5.7.19,创建的数据库默认选择的编码是utf8 – UTF-8 Unicode,因此字段默认的编码为utf-8,但在项目开发中存在一个需求:在某个字段中存储混有emoji表情的字符串,此时以普通编码格式如utf8来存储emoji表情时,会报错。

把字段的编码格式改为:utf8mb4即可。

详细可见:https://www.cnblogs.com/itmacy/p/12201193.html

我怀疑你只是把数据库的默认编码设置为了utf8mb4,却没有对表来修改编码。检测一下需要存emoji内容的字段,是不是utf8mb4。如果没改过,大概率还是utf8.

回到顶部