欢迎来到[自学php网] ①群 AG亚游集团

AG亚游集团 > 网站后台 > 微信开发 >

微信nickname乱码及mysql编码格式设置(utf8mb4)

来源:自学PHP网 ?? 时间:2015-04-14 12:58?作者:

[导读] 今天在写微信公众平台项目时,写到一个用户管理模块,接口神马的已经调试好了,于是将用户从微信服务器保存到本地数据库,发现报错:java sql SQLException: Incorrect string value: xF0 x9F...

今天在写微信公众平台项目时,写到一个用户管理模块,接口神马的已经调试好了,于是将用户从微信服务器保存到本地数据库,发现报错:

 

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

 

大致说的是保存nickname字段时,发现不正确的字符串值,于是在保存前,将用户的昵称打印了出来,发现有emoji表情,上网查了一下,utf-8大小可能有三种分别为2字节、3字节、4字节,而Mysql中的utf-8编码格式最多支持3字节,所以需要升级Mysql版本及编码格式:

 

Luckily, MySQL 5.5.3 (released in early 2010) introduced a new encoding called utf8mb4 which maps to proper UTF-8 and thus fully supports Unicode, including astral symbols.

 

也就是mysql在5.5.3版本中引入新的编码格式,取名为utf8mb4,所以如果你电脑上的版本低于此版本,请先更新电脑中的Mysql版本,查看Mysql版本:

 

mysql -V
mysql  Ver 14.14 Distrib 5.6.23, for osx10.9 (x86_64) using  EditLine wrapper

 

发现电脑中的版本没问题,于是直接找改编码格式的方法:

 

Make sure to set the client and server character set as well. I have the following in my MySQL configuration file (/etc/my.cnf):

 

于是去查找my.cnf文件所在的方位,在我电脑中路径为(用homebrew安装的)

/usr/local/Cellar/mysql/5.6.23/my.cnf

 

用sudo vim打开该文件:

$ sudo vim 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

 

重启mysql服务,查看编码格式

 

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec)

 

发现已经设置成功,于是重新启动程序,发现还是报错,错误还是刚才的错误,这下可以确定问题不在数据库的编码格式中了,于是继续找答案,发现jdbc驱动有问题,当前程序中的驱动版本:

 

mysql-connector-java-5.1.7-bin.jar

 

于是去mysql官网找最新jdbc驱动,地址:

 

/devaff4mysqlaff4com/downloads/file.php?id=456317

 

版本:

 

mysql-connector-java-5.1.35-bin.jar

 

 心想这下应该可以了吧,重新启动程序,我靠! 发现还报错,继续是刚才的错误,这下只能找找hibernate配置文件中是否有问题了,hibernate配置文件中的连接地址为:

 

jdbc:mysql://wechat_development?useUnicode=true&characterEncoding=utf8 

 

上stackoverflow中找了找解决方案,里面也没说为何,直接说把后面的useUnicode及characterEncoding直接去掉就好了,于是配置文件变成如下:

 

jdbc:mysql://wechat_development 

 

 

最新文章

点击排行

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号@版权所有AG亚游集团

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

日球迷吐槽恒大:能拿1分该满足 已非过去的王者 韦世豪办\"特殊\"球迷见面会 多年国安粉获赠签名球衣 FBI被曝在特朗普竞选团队安插“间谍” 总统震怒 你所羡慕的硅谷员工其实只是二等员工 一生耕耘国象事业 周永进雄心勃勃创品牌赛事 牛文文撰文谈万兴科技上市:吴太兵的坚守 韩国发生新生儿连续死亡案 或为针剂污染所致 台当局谋划参加世界卫生大会:不获邀也要去 可兰白克:国家队多了很多新面孔 时间紧挑战大 瓜帅:曼城要拿英超100分纪录 我们就是史上最佳 德州仪器Q2挣了14亿,模拟产品贡献90%利润 突降大雪!亚泰申花或迎雪战 看不清球在哪儿|图
2019年共享单车用户预计达3.06亿 万钢谈“人工智能”:应对可能对伦理和隐私的挑战 日本海底发现1600万吨稀土矿 可供全球用数百年 维拉63杆领先西西里岛赛第三轮 瞄准欧巡首冠 4月北京PM2.5浓度同比上升20.8% 分析称有4点… 名宿:C罗永远想做世界第1 他把信念决心带给尤文 英国64所高校罢工惹怒留学生 华人老师控诉没尊严 《区块链100问》第89集:区块链适合于哪些领域? 尤权:加强多党合作理论研究 构建新型政党制度 李彦宏发内部信感谢陆奇:移动生态与AI均有明显进展 洪秀柱南下高雄为蓝选将打气:不邀请也会主动上门 明年五一前 几千万个家庭将收到这份国家荣誉
中超巴西教练最后坚持者 斯科拉里的下季更关键 马竞糟了!门神伤了无缘欧联 只能上年轻小将 这20个领域今年将有大动作 涉及所有人 美国通用电气世界最大海上风力涡轮机将在英测试 火速卖资产完成业绩对赌 英雄互娱首季营收净利双降 苏格兰女子赛阿瑞雅梁熙英领先 刘钰T24林希妤T77 山东书记省长南下“取经”后 多个地市代表团南下 媒体:泰国攀牙府将严查游客入庙着装不当现象 楼市调控效果如何?住建部长王蒙徽这么说 养20头牛一年赚多少钱 女生最值得学的手艺 女人没经验开什么店好 前景最好的十大专业 AG亚游集团