收藏
回答

发送emoji到服务器需要对发送内容进行编码吗?

最近发现用户名和用户输入内容有????, 查了一下发现需要让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
最后一次编辑于  2020-09-24
回答关注问题邀请回答
收藏

3 个回答

  • 陈宇明
    陈宇明
    2020-09-24

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

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

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

    2020-09-24
    有用 1
    回复
  • 微品智
    微品智
    2020-09-24

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

    2020-09-24
    有用 1
    回复
  • 微喵网络
    微喵网络
    2020-09-24

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

    2020-09-24
    有用
    回复 1
    • ruinb0w
      ruinb0w
      2020-09-30
      T_T 就一个小团队
      2020-09-30
      回复
登录 后发表内容
问题标签