欢迎来到[自学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

视频:倪光南院士告诉你“中国芯”为什么这么难? 安徽芜湖回应黑臭水直排长江支流:系生活污水 曝韦德来CBA打球传闻不靠谱 浙江目标另有其人 阿森纳战术还玩这一套 埃梅里能变升级版温格吗? 马化腾建议加快粤港澳大湾区建设 推动区域融合发展 西格:换下张睿因她已经染黄 不一定要进第四个球 乌拉圭世界杯初选名单:苏神+卡瓦尼 马竞双子星 三大外卖平台下线数千家违规餐饮店 店铺信息公示 大数据助小炮独擒3.25高赔!中超日职早场再战 这场灾难已过42年 但这些数字至今仍刻骨铭心(图) 曝巴萨今夏2500万撬英超当红名将 pk曼联抢人 特朗普施压中国要求减少对美贸易顺差 外交部回应
韩国JTBC杯李世石执黑胜许映皓 夺个人第50冠 摩洛哥万人游行 抗议美驻以大使馆迁至耶路撒冷 台媒称美军将进驻美驻台机构 为让蔡英文逃跑时放心 厄齐尔被当枪使?土耳其为欧洲杯申办权摆德国一道 亚汇中国:鲍威尔即将闪亮登场 市场不敢轻举妄动 科技股让美股牛了九年 独角兽何时登陆A股? 品汇国际:贸易战中期主导美元涨难跌易 英国王室婚礼:从帝国扩张手段到文化名片 兰格钢铁:第20周兰格进口矿价格指数小幅回升 铁矿石振荡上行 螺纹钢看高一线 科尔曼:华夏本应该赢下比赛 冲亚冠资格还有希望 北京将新增普惠性幼儿园 规定每所园配一名督学
中国超级计算机冠军宝座难保 应用远滞后于能力发展 险创历史!19岁女将亮相上海环球马术冠军赛获最佳成绩 候任纽约联储行长威廉姆斯:差不多该停止前瞻指引了 安徽阜阳原副市长获刑四年半:自己弄权 家人收钱 欧盟委员会主席本周访美力阻贸易战 外界预期很悲观 证监会有关A股对接新经济改革方案正报批 美翼装飞行选手飞越巴西基督像 有900次跳伞经历 购房者花百万集体认购别墅 没住上还面临起诉 俄罗斯改判中国队坦克两项成绩:高射机枪成绩为命中 夏天什么产品最好卖 投资两万的小型加工厂 马云说未来赚钱的行业 家庭办厂项目废纸加工 AG亚游集团