mysql存储emoji表情报错的处理方法:更改编码为utf8mb4

uft-8编码可能2个字节、3个字节、4个字节,而MySql的uft-8只支持3字节的数据,而移动端的表情数据是4字节的字符。如果直接采用utf-8编码的数据库中插入表情数据,Java程序将报错:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)

解决方法之一是对4字节的字符进行编码存储,然后取出来的时候,再进行解码。这样做的话就会使得任何使用该字符的地方都要进行解码和编码。

utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。

采用utf8mb4的好处是:存储与获取数据的时候,不用考虑编码和解码的问题

解决办法

更改数据库的编码为uft8mb4

1.MySql的版本

utf8mb4的最低版本支持版本为5.5.3+

2.MySql驱动

5.1.34可用,最低不能低于5.1.13

3.修改MySql配置文件

修改mysql的配置文件my.cnf,linux环境下一般在/etc/mysql/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'

4.重启数据库,检查变量

登录mysql后输入:SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

确保一下几个变量:

系统变量

描述

character_set_client

客户端来源数据使用的字符集

character_set_connection

连接层字符集

character_set_database

当前选中数据库的默认字符集

character_set_results

查询结果字符集

character_set_server

默认的内部操作字符集

这几个变量必须是utf8mb4.

同时,数据库和建好的表也转化为utf8mb4.

5.数据库连接的配置

数据库连接参数中:

characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。

而autoReconnect=true是必须加上的。

经过上面的步骤,就可以实现在mysql数据库中存储emoji表情了。

mysql存emoji_MySql存储emoji表情报错的处理方法相关推荐

  1. emoji表情mysql报错_MySql存储emoji表情报错的处理方法

    mysql存储emoji表情报错的处理方法:更改编码为utf8mb4 uft-8编码可能2个字节.3个字节.4个字节,而MySql的uft-8只支持3字节的数据,而移动端的表情数据是4字节的字符.如果 ...

  2. 【Mysql】存储emoji表情报错(Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F...‘)的解决方案

    [Mysql]存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案 参考文章: (1)[Mysql]存储emo ...

  3. 【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...

    Emoji表情字符现在在APP已经广泛支持了.但是MySQL的UTF8编码对Emoji字符的支持却不是那么好.所以我们经常会遇到这样的异常: Java.sql.SQLException: Incorr ...

  4. mysql xf0x9fx8ex88_【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...

    Emoji表情字符现在在APP已经广泛支持了.但是MySQL的UTF8编码对Emoji字符的支持却不是那么好.所以我们经常会遇到这样的异常: Java.sql.SQLException: Incorr ...

  5. 【已解决】Mysql 存储 emoji 表情报错 Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F

    mysql 库.表.字段 字符集从 utf8 改为 utf8mb4 校验规则改为 utf8mb4_unicode_ci

  6. mysql存储图片node_Node.js教程 阿里云mysql如何支持存储emoji表情

    本篇教程介绍了Node.js教程 阿里云mysql如何支持存储emoji表情,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入. < 本篇主要记录nodejs项目阿里云m ...

  7. mysql存储移动端emoji表情 报错Incorrect string value: '\xF0\x9F\x98\x82'

    原因:mysql utf8存储2-3个字节 移动端的emoji表情为4个字节 方法: 1.修改my.cnf 文件 加入 [client] default-character-set = utf8mb4 ...

  8. java mysql emoj报错_MySQL插入emoji表情报错 SQLException: Incorrect string value 的两种解决方案...

    原因:mysql的UTF-8只支持三个字节的存储,而一般字符是三个字节,但是emoji表情是4个字节,所以存储不了. 第一种方案:修改数据库表字符集 而mysql为了解决这个问题,在5.5.3版本之后 ...

  9. 记一次解决Mysql:Incorrect string value: ‘\xF0\x9F\x8D\x83\xF0\x9F...‘ for column 插入emoji表情报错问题

    近日在插入mysql数据时,报了一个错'\xF0\x9F\x8E\x80Sa...'的错误,导致数据插入不进去.一看字段名是存储微信昵称的字段,想到的可能是有什么表情符号插入不进去. 通常情况,Mys ...

  10. mysql adminer 导入csv_mysql导入csv的4种报错的解决方法

    以此悼念我今天踩过的4个坑-- 坑一:local的错 报错: error 3948 (42000): loading local data is disabled; this must be enab ...

最新文章

  1. 去年领了163亿薪资的马斯克,刚推出智能召唤功能就被吐槽:遇到人开的车就蒙圈...
  2. spring中关于aop拦截功能的记录
  3. etsi计算机应用场景,ETSI发布最新版DVB数据广播规范,包括五大应用场景
  4. weblogic如何在linux扩容,如何在linux的weblogic上增加启动参数
  5. Maven生命周期详解
  6. HDU多校3 - 6797 Tokitsukaze and Rescue(dfs+最短路)
  7. 【Hive的高级查询详】
  8. python数据分析平均时间间隔_Python数据分析中,如何把数值如(1511544070)转换成常规的时间格式?...
  9. 在.net 2.0 中使用ftp
  10. Win10关闭系统自动更新
  11. ecshop Touch笔记
  12. java定义不同类型参数_java – Mockito允许使用不同的参数类型来模拟重载方法
  13. 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
  14. uml 9图不同的角度品种分类
  15. 简单是王道《九、讲故事》
  16. Python--第一天
  17. oracle查看视图属于哪个用户,oracle查询视图归属于哪个用户
  18. 解决问题的能力和个人学习能力总结。
  19. 广东技术师范大学一行来访虹科并进行“见习-实习-就业一体化基地 ”挂牌仪式
  20. Origin复制到PPT中无法打开

热门文章

  1. ckpt下载 deeplabv3_Ubantu下 用deeplabV3+训练自己的数据集 你可能遇到的所有坑都在这了...
  2. Android-path类整理
  3. 京东智能硬件平台Alpha 让零售“无界限”
  4. hinkPad T510系列主要机型对比
  5. 开启进程的两种方式:类、函数
  6. 获取系统当前时间(精确到毫秒)
  7. 【iOS】屏幕适配之NSLayoutConstraint
  8. MYSQL 二进制还原
  9. MSDN URL 重写
  10. 四级英语作文:收入差距