`
dcj3sjt126com
  • 浏览: 1818585 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

将数据库的编码设置为utf8mb4_general_ci

然后在yii2的数据库连接的charset配置成utf8mb4

 

参考内容:

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

 

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驱动,地址:

 

http://dev.mysql.com/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 

 

继续重新启动程序,这下真的保存成功了,而且表情都在~~~~ oh ye

分享到:
评论

相关推荐

    Incorrect string value: ‘\xF0\x9F\x8C\xB7’ for column ‘nickname’修改mysql某列的编码格式

    Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。 Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8C\xB7' for column 'nickname' at row 1 解决方案 ...

    python 微信自动打卡脚本微信自动打卡脚本

    背景 疫情期间由于丧心病狂的业主爸爸要求每小时报道一次,所以写了一下脚本 import schedule import time import itchat ...print(groups_list[i]['NickName'],groups_list[i]['MemberCount'],人)

    eims微信订餐系统 v2.0.zip

    微信订餐系统eims_wxdc v2.0 build20140717 更新说明: 1、去掉了礼品模块 2、简化了商家管理 3、商家与菜单添加了排序 4、订单添加了回收站 5、优化了获取JSON数据 6、添加了Refresh_token增加授权有效期 7...

    微信小程序之个人简历

    微信小程序个人简历制作,传统的简历以一个文档的形式存在,现如今可以借助微信小程序平台制作个性化的简历。<!--index.wxml--> !hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo=...

    asp微信订餐系统eims_wxdcv2.0

    inc/conn.asp 的安装路径 此程序需要绑定微信服务号[微信浏览器才能打开],因为测试需要,固定了绑定账号 正式使用时: 请去掉 inc/conn.asp 的: nickname="eims" openid="eims" 同时打开 api/0.asp 配置微信服务号...

    微信 网页授权获取用户基本信息(asp.net C#)

    微信授权获取用户基本信息 //nickname = outputObj1["nickname"].ToString(); //昵称 //sex = outputObj1["sex"].ToString(); //性别 headimgurl = outputObj1["headimgurl"].ToString(); //头像url //province ...

    微信小程序-一款发布日志和心情的小程序

    Bmob-wechatApp-xinyou 小程序名称为心邮,这是一款发布日志和心情的小程序。用来倾诉烦恼、分享快乐。... (1)在_User表中新建字段userPic(String),nickname(String) (2)新建Diary表,新建字段title(String),publis

    微信公众平台 网页授权获取用户基本信息(asp.net C#)

    Response.Write("用户OPENID:" + OAuthUser_Model.openid + " 用户昵称:" + OAuthUser_Model.nickname + " 性别:" + OAuthUser_Model.sex + " 所在省:" + OAuthUser_Model.province + " 所在市:" + ...

    微信公众平台PHP-SDK

    Wechatext为非官方微信发送API * 注: 用户id为通过getMsg()方法获取的FakeId值 * 主要实现如下功能: * send($id,$content) 向某用户id发送微信文字信息 * getUserList($page,$pagesize,$group) 获取用户信息 * ...

    微信公众平台网页授权获取用户基本信息源代码

    asp.net C#开发,基于微信公众平台网页授权获取用户基本信息源代码

    用Delphi XE7 Indy写的微信公众平台示例

    Delphi XE7 Indy的IdHTTP写的微信公众平台,只做了部分功能,希望大家能用上 temp := JSONObject.Values['subscribe'].ToString; Memo1.Lines.Add('subscribe:' + temp); temp := JSONObject.Values['openid']....

    java ipone 微信昵称emoji表情保存失败 问题解决

    ipone5s中昵称输入“emoji 表情”,保存数据库有问题。 Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8E\x80\xE5\xA4...' for column 'nickname' at row 1

    mysql数据库

    `nickname` varchar(100) COLLATE utf8_unicode_ci DEFAULT '', `login_account` varchar(50) COLLATE utf8_unicode_ci DEFAULT '', `login_password` varchar(50) COLLATE utf8_unicode_ci DEFAULT '', `login_...

    基于Java的微信机器人项目.zip

    基于Java的微信机器人.zip How to use action:sendMessage https://sekiro.virjar.com/invoke?group=wx_robot&action=sendMessage&content=哈哈哈哈&receiverNickname=Blanke&atWechatIds=&isGroup=false&...

    微信小程序-微信小程序-心邮

    Bmob-wechatApp-xinyou 小程序名称为心邮,这是一款发布日志和心情的小程序。用来倾诉烦恼、分享快乐。... (1)在_User表中新建字段userPic(String),nickname(String) (2)新建Diary表,新建字段title(String),publis

    微信源码,在线看电影源码

    $nickname = $userInfo['nickname'];//获取昵称 $sex = $userInfo['sex']; //获取性别 $city = $userInfo['city'];//获取用户所在城市 $headimgurl = $userInfo['headimgurl'];//获取用户头像 ...

    微信公众平台 网页授权获取用户基本信息(.net)

    微信公众平台 网页授权获取用户基本信息 //获取从wxProcess.aspx传递过来的跳转地址reurl if (Request.QueryString["reurl"] != null && Request.QueryString["reurl"] != "") { reurl = Request.QueryString["re...

    3-7 获取临时授权和微信基本信息 - EMOS小程序1

    5. } 6. }) 5. // 获取用户信息 9. let nickName = resp.userInfo.nickName

    微信开发 微信授权详解

    最近有机会做到一个微信项目;把其中自己整理的笔记分享给大家,有不足或错误的地方望大家指正! 1关于微信授权这块的流程图,如下 一些代码碎片仅供参考: var myNickname; var myHeadimgurl; var activityId; ...

Global site tag (gtag.js) - Google Analytics