美文网首页
微信 Emoji表情 保存Mysql数据库报错

微信 Emoji表情 保存Mysql数据库报错

作者: LAMYMAY | 来源:发表于2018-07-23 10:24 被阅读0次

    问题出在编码格式上,Emoji表情是编码格式uft-8mb4,MySQL默认的utf-8mb3,装不下就报错了,所以用MySQL的朋友们请不要使用"utf8",请使用"utf8mb4" 

    处理方案:两种

    方案1:修改数据库表

    建议只修改表属性即可,不用重启数据库。下面是修改表属性字符集语句。

    ALTER TABLE t_hhr_info MODIFY COLUMN wx_nickname VARCHAR(50) CHARACTER SET utf8mb4 NULL;

    方案2:入库数据重新编码,依然是utf-8mb3格式的入库。出库数据在重新编码。

    // 入库之前,使用 Base64 编码

    String nickname = request.getParameter("nickname");

    nickname = Base64.encodeBase64String(nickname.getBytes("utf-8"));

    // 出库后,使用 Base64 解码

    nickname = new String(Base64.decodeBase64(nickname.getBytes()),"utf-8");

    //注意:Base64 连图片都能编码,何况区区一特殊符号

    -----------------------------------------------------------------

    今天做的了个获取微信粉丝的功能,发现将昵称插入数据库报错.长度肯定是够的

     string value: '\xF0\x9F\x98\x84\xF0\x9F

    找了点资料发现UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

    网上解决方案都是

    修改mysql配置

    1.在mysql的安装目录下找到my.ini,作如下修改:

    [mysqld]

    character-set-server=utf8mb4

    [mysql]

    default-character-set=utf8mb4

    2 重启

    net stop mysql

    net start mysql

    3 修改表

    ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

    相关文章

      网友评论

          本文标题:微信 Emoji表情 保存Mysql数据库报错

          本文链接:https://www.haomeiwen.com/subject/whpdmftx.html