本博客的记录的操作在linux

项目中需要从微信获取授权来登录,在此过程,保存微信emoji表情昵称到mysql数据库的时候出了错误。

老规矩百度一下,得知是mysql的utf8字符集只支持1-3个字节的字符,而表情则需要4个字节,所以mysql提供了一个utf8mb4字符集,在支持4个字节的同时又可以完美兼容utf8,免去我们的后顾之忧。

百度大部分的步骤是这样的,1-3步骤可以使用命令也可以使用工具(例如Navicat)来完成。

1:修改数据库字符集:

(1) 命令方式:ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

(2)工具方式:选中指定数据库,邮件选择数据库属性,修改字符集与排序规则如下:

2:修改数据库表的字符集

(1)命令方式: 首先切换到步骤1所操作的数据库,随后执行命令:ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

(2)工具方式: 打开数据库,选择要操作的表,右键选择设计表,选择选项,选择字符集和排序规则如下:

3:修改列的字符集

(1)命令方式: ALTER TABLE 表名 CHANGE 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

例:ALTER TABLE user CHANGE name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

(2)工具方式: 选中要操作的表,右键选择设计表,选择指定字段,修改字符集和排序规则如下:

4:修改my.cnf文件(windows是my.ini文件)

编辑文件,添加以下内容:

[client]

default-character-set=utf8mb4

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect=’SET NAMES utf8mb4'

[mysql]

default-character-set=utf8mb4

5:最后还需要重启一下mysql哦。

上述方式适用于普通的mysql使用表情的问题。如果使用mybatis做持久层操作,可能会碰到更坑的问题,这些你都配置了,依然不会成功。找了很多资料,终于发现一位博主的解答,连接池的配置中可以添加这么一个配置:

	<property name="connectionInitSqls">
<list>
<value>set names utf8mb4</value>
</list>
</property>

 最后,当然是完美的解决了。

很想贴上最后这位博主的链接~但找遍了历史记录也没能找到,恨忘记收藏~~~

如果无法通过以上方式解决问题,可以参考下这问简书博友的文章:https://www.jianshu.com/p/b0f5eb5d7cc3

他使用一种折中的方式,对存储的内容编码后保存,取出后再解码,相对较为麻烦,但也不失为一种解决方式

  

SSM框架+MySql保存emoji表情的更多相关文章

  1. MySQL保存 emoji 表情(微信昵称表情)

    问题分析 在微信开发过程中,总是会遇到带有emoji表情昵称的微信用户无法自动登录的问题. 后台代码抛出类似下面的异常信息. java.sql.SQLException: Incorrect stri ...

  2. mysql保存emoji表情(微信开发用户昵称..)

      java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for colum n 'name' at row 1 at c ...

  3. mysql保存emoji表情,utf8mb4保存不了表情的问题

    报错信息 : Incorrect string value: '\xF0\x9F\x99\x85\xE2\x80...' for column 'content' at row 1 mysql数据库的 ...

  4. windows中mysql5.7保存emoji表情

    1.找到my.ini文件,修改一下配置: [client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake ...

  5. Mysql 保存emoji表情报错

    保存emoji表情错误 首先错误表现,抛出业务层报错之外,根源的数据库错误是: sql 错误码 1366 字符集相关错误. uncategorized SQLException; SQL state ...

  6. MySQL支持Emoji表情

    让MySQL支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节, ...

  7. mysql中emoji表情存储

    mysql中emoji表情存储 背景 在mysql 5.7.19,创建的数据库默认选择的编码是utf8 -- UTF-8 Unicode,因此字段默认的编码为utf-8,但在项目开发中存在一个需求:在 ...

  8. mysql 支持emoji表情

    在mysql插入emoji表情,出现错误: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8A' for column ' ...

  9. 让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)

    手机端插入Emoji表情,保存到数据库时报错: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' ...

随机推荐

  1. android重启代码

    首先新建一个app然后添加 android:sharedUserId="android.uid.system" 再添加重启的权限 <uses-permission andro ...

  2. LeetCode之“链表”:Reverse Nodes in k-Group

    题目链接 题目要求: Given a linked list, reverse the nodes of a linked list k at a time and return its modifi ...

  3. PS图层混合算法之二(线性加深,线性减淡,变亮,变暗)

    线性加深模式: 查看每个通道的颜色信息,通过降低"亮度"使底色的颜色变暗来反映绘图色,和白色混合没变化. Linear Burn 线形加深 C=A+B-1 如果上下层的像素值之和小 ...

  4. SpriteBuilder弹出菜单层造成卡顿的解决办法

    如果你注意到略微的卡顿(延时)(lag due to low framerate)当显示一个全屏的弹出菜单时,你可以简单的设置_levelNode(_levelNode是主游戏界面中的背景层,所有游戏 ...

  5. Eclipse修改工程名字

    1:修改项目目录下:.project文件 <?xml version="1.0" encoding="UTF-8"?> <projectDes ...

  6. Android使用统计图AChartEngine 来展示数据

    本文采用的统计图参考:AChartEngine 访问地址 :http://code.google.com/p/achartengine/ 先给出效果图 本文的开发代码主要是这些:对一些代码进行修改 以 ...

  7. 遍历输出图片加hover

    1. $(".icon a>div").hover(function () { var slls = $(this).attr("class"); sll ...

  8. jdk1.7 tomcat-7安装

    由于软件下载地址经常有变动,所以不能直接wget,还是直接到网上点击下载 下载jdk http://www.oracle.com/technetwork/java/javase/downloads/j ...

  9. 项目中Orcale存储过程优化记录

    今天对之前写的Orcale存储过程做了一些优化,使其变得更加灵活,之前写的存储过程是使用游标存储SQL执行结果,但是使用游标带来的弊端是,在声明时,它所执行的SQL就已经被写死,无法修改.若想更加灵活 ...

  10. Python 3 中的json模块使用

    1. 概述 JSON (JavaScript Object Notation)是一种使用广泛的轻量数据格式. Python标准库中的json模块提供了JSON数据的处理功能. Python中一种非常常 ...