让Java后台MySQL金沙国际官网能够支持emoji表情的方法

 更新时间:2017年03月04日 11:03:14   作者:bigcode   我要评论
最近开发的iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题。下面这篇文章主要介绍了关于让Java后台MySQL金沙国际官网能够支持emoji表情的方法,需要的朋友可以参考下。

前言

公司最近在开发中遇到一个问题,在弄帖子的发布与回复问题,然后再iOS端和Android端添加表情的时候都会出错

Caused by: java.sql.SQLException: Incorrect string value: '\xF6\x9D\x98\x84' for column 'comment' at row 1

提示表情有问题,然后赶紧查资料。

首先金沙国际官网编码为UTF-8,字段content设置为text(CHARSET=utf8 COLLATE=utf8_unicode_ci)用于存储帖子内容信息,现在上线新功能存储emoji表情,插入emoji表情就会报出上述错误,UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。utf8mb4兼容utf8,且比utf8能表示更多的字符,所以要设置金沙国际官网的编码为utf8mb4。

金沙国际官网编码从utf8设置为utf8mb4

1、修改my.cnf

[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

2、对金沙国际官网相关的表进行字符集修改

将金沙国际官网转换为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;

3、重启金沙国际官网

sudo /etc/init.d/mysql restart

4、检查金沙国际官网的字符集是否是utf8mb4

SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';

5、java 设置

设置Java的金沙国际官网连接,将characterEncoding去掉,然后保证mysql connector版本高于5.1.13,就OK了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对澳门金沙网上娱乐的支持。

相关文章

最新评论