MySQL插入emoji手机表情报错解决方案
程序员文章站
2022-06-29 12:55:17
...
报错原因:
ps:为什么没有内容呢,由于iteye插入emoji报错,导致保存被截断了,2018-04-11再次编译
插入手机表情报错,类似(手机可观看的emoji表情,这里报错就不插入了)
报错内容:
Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x90\xB4' for column 'content' at row 10
原因:
资料显示原因是,MYSQL 5.5 之前, UTF8 编码只支持1-3个字节,只支持BMP这部分的unicode编码区,而emoji图标恰好是4个字节的编码进行存储。从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,所以能支持更多的字符集。所以要解决问题,必需把数据库表字符编码全部改成utf8mb4。
解决方案:
1,更新my.cnf 编码为utf8mb4
$ sudo gedit /etc/mysql/my.cnf
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-client-handshake = FALSE collation-server = utf8mb4_unicode_ci init-connect='SET NAMES utf8mb4' character-set-server = utf8mb4
2,重启MySQL服务器
service mysqld stop service mysqld start service mysqld restart
3,查看系统文件编码格式
mysql > SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
上一篇: 使用SpringMVC返回json字符串的实例讲解
下一篇: Hibernate组件映射代码详解