开发者社区> 苟哥> 正文

如何在mysql数据库中保存emoji特殊字符

简介: MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。
+关注继续查看

MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。其实,utf8mb4是utf8的超集,理论上原来使用utf8,然后将字符集修改为utf8mb4,也 会不会对已有的utf8编码读取产生任何问题。

一次在做微信二开的项目时,发现保存微信用户信息的nickname时报错,寻找原因发现是有些用户昵称是带有emoji表情符的,并且当时的数据库表属性设置的字符编码还是utf8的,数据库当然会报错。经过网上搜索一些资料,找到了完整的解决方案:

  1. 修改database,table,column字符集:
    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;    
  2.     编辑my.cnf文件,在对应章节添加如下内容:
    [client]
    default-character-set = utf8mb4
    [mysql]
    default-character-set = utf8mb4
    [mysqld]
    character-set-client-handshake = FALSE
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4'

  3. 重启mysql服务即可

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ArcMap属性表汉字乱码的一种解决方法
本文介绍ArcMap软件打开图层的属性表后,出现字段中汉字乱码情况的解决方法~
16 0
一日一技:如何判断某个汉字是不是在字体库中
一日一技:如何判断某个汉字是不是在字体库中
13 0
数据库中存的内容乱码显示的是问号????的解决方案
数据库中存的内容乱码显示的是问号????的解决方案
166 0
Win软件 - 使用 Sublime Text 将含下划线的字符串批量替换为驼峰命名法格式的字符串
Win软件 - 使用 Sublime Text 将含下划线的字符串批量替换为驼峰命名法格式的字符串
193 0
【Mysql】char(25)和varchat(25)可以存多少文字,多少中文和英文的逗号
【Mysql】char(25)和varchat(25)可以存多少文字,多少中文和英文的逗号
134 0
空格在代码中变成其他字符或者乱码问题解决方法
空格在代码中变成其他字符或者乱码问题解决方法
2658 0
带emoji字符串无法存入utf8数据库的解决办法
包含emoji的字符串,如,无法存入utf8编码格式的mysql数据库。网上说的解决办法有两种,一是自己转换,而是将数据库编码全部改成utf8mb4。这里介绍的是第一种办法。
1309 0
+关注
苟哥
脚踏实地,希望不被技术世界淘汰
文章
问答
视频
相关电子书
更多
冬季实战营第三期:MySQL数据库进阶实战
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多