微信公众号开发-emoji表情存库异常
来源:互联网 发布:mac版金蝶友商智慧记 编辑:程序博客网 时间:2024/05/16 13:44
微信公众号开发(坑)-emoji表情存库异常
年后刚来就开始忙,一直在加班。赶进度,上线,终于有时间回来发发博客:
最近处理的一个微信的坑:
微信网名中:可以使用Emoji表情。但是同样的就带来了一系列的问题:
将用户名存入数据库时候存在异常:
SQL异常如下:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1
那么该如何解决呢?
看了N多别人的博客。准备将数据库改UTF8MB4字符集
原因:
普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,只能使用UTF8的超集 utf8mb4 字符集。
于是改了 数据库的字符集并且重启了线上的数据库。 冒着掉脑袋的风险,成功改了字符集,很成功的 大家都收到了监控报警。
一、改Mysql字符集
改全库字符集 并不复杂:
MYSQL 版本一定要高于 5.5.3 如果低 就升级数据库吧 (好在我是5.7)
1、编辑 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
我们采用的是主从架构。 一定要主从都改
2、重启数据库
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';Variable_nameValuecharacter_set_clientutf8mb4character_set_connectionutf8mb4character_set_databaseutf8mb4character_set_filesystembinarycharacter_set_resultsutf8mb4character_set_serverutf8mb4character_set_systemutf8collation_connectionutf8mb4_unicode_cicollation_databaseutf8mb4_unicode_cicollation_serverutf8mb4_unicode_cicollation_connection 、collation_database 、collation_server是什么没关系。
很成功,重启服务。发现还是存不进库。
3、改表结构
原来涉及到的表没改。 将相关的表改了字符集为UTF8MB4 或者nikename 字段改UTF8MB4即可。
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
重启服务,发现问题依然存在。再三检查。
4、发现JDBC URL characterEncoding=utf8
这个并没用问题。原来JDBC Driver 版本高于 5.1.13,会自动识别的。
那么问题出现在哪里了?
发现我们的架构中Mysql中间件是 mysql-proxy 心想是不是这里出现了问题。
于是先改了Mysql-proxy的字符集。
重启还是不行。这我就生气了。然后把mysql-proxy直接去了 tomcat直接链接 主库。
发现没问题了。 但是Mysql主从架构必备的。 发现mysql-proxy 代理出来的是 mysql5.1 心想 可能是这里出了问题。
于是 提议改中间件。 改用了MyCat(中间件)
果然好了。。。。
其实不改也行。。使用Druid 数据源 配置一个参数 设置
<property name="connectionInitSqls" value="set names utf8mb4;"/>
- 微信公众号开发-emoji表情存库异常
- 微信公众号使用Emoji表情
- 微信公众号开发--普通表情与emoji表情的处理
- 【php】微信公众帐号开发接口--Emoji表情
- 微信公众号自定义菜单添加emoji表情图标
- 微信公众号开发--Emoji表情(可用于关注自动回复等)
- 微信公众平台昵称乱码emoji表情过滤
- 微信公众平台昵称乱码emoji表情
- 微信公众平台昵称乱码emoji表情过滤
- 微信公众平台昵称乱码emoji表情过滤
- 微信公众号自定义菜单如何添加emoji表情图标?
- 微信公众平台开发 qq表情
- 微信开发获取昵称乱码 emoji表情
- mysql保存emoji表情(微信开发用户昵称..)
- 微信公众号开发异常
- 开发微信公众号用户昵称带表情时过滤表情
- 微信公众号开发--微信昵称中含有emoji字符串处理
- 微信公众号emoj表情添加
- 初识HTML
- 排列 POJ
- 第一次学习java,很难受
- SDP协议
- Linux 内核中的 GCC 特性
- 微信公众号开发-emoji表情存库异常
- 前台页面跳转的例子(两种实例)
- 使用<a>标签,连接到另外一个页面
- hdfs工作机制及读写数据简要流程图
- ios NSURLRequest NSMutableURLRequest 数据请求
- 第一次写博客
- 5-19 求链式线性表的倒数第K项
- 蓝桥杯寒假任务之送分啦
- 前端小白奋斗之路开始了