源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

让Java后台MySQL数据库能够支持emoji表情的方法

  • 时间:2022-04-02 22:51 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:让Java后台MySQL数据库能够支持emoji表情的方法
[b]前言[/b] 公司最近在开发中遇到一个问题,在弄帖子的发布与回复问题,然后再iOS端和Android端添加表情的时候都会出错
Caused by: java.sql.SQLException: Incorrect string value: 'xF6x9Dx98x84' for column 'comment' at row 1
提示表情有问题,然后赶紧查资料。 首先数据库编码为UTF-8,字段content设置为[code]text(CHARSET=utf8 COLLATE=utf8_unicode_ci)[/code]用于存储帖子内容信息,现在上线新功能存储emoji表情,插入emoji表情就会报出上述错误,UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。utf8mb4兼容utf8,且比utf8能表示更多的字符,所以要设置数据库的编码为utf8mb4。 [b]数据库编码从utf8设置为utf8mb4[/b] [b]1、修改my.cnf[/b]
[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
character-set-client-handshake = false
[b]2、对数据库相关的表进行字符集修改[/b] 将数据库转换为utf8mb4
ALTER DATABASE post CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
ALTER TABLE `post_article` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
ALTER TABLE `post_article` MODIFY COLUMN `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
[b]3、重启数据库[/b]
sudo /etc/init.d/mysql restart
[b]4、检查数据库的字符集是否是utf8mb4[/b]
SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';
[b]5、java 设置[/b] 设置Java的数据库连接,将characterEncoding去掉,然后保证mysql connector版本高于5.1.13,就OK了 [b]总结[/b] 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程素材网的支持。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部