SSM框架+MySql保存emoji表情
本博客的记录的操作在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表情的更多相关文章
- MySQL保存 emoji 表情(微信昵称表情)
问题分析 在微信开发过程中,总是会遇到带有emoji表情昵称的微信用户无法自动登录的问题. 后台代码抛出类似下面的异常信息. java.sql.SQLException: Incorrect stri ...
- mysql保存emoji表情(微信开发用户昵称..)
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for colum n 'name' at row 1 at c ...
- mysql保存emoji表情,utf8mb4保存不了表情的问题
报错信息 : Incorrect string value: '\xF0\x9F\x99\x85\xE2\x80...' for column 'content' at row 1 mysql数据库的 ...
- windows中mysql5.7保存emoji表情
1.找到my.ini文件,修改一下配置: [client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake ...
- Mysql 保存emoji表情报错
保存emoji表情错误 首先错误表现,抛出业务层报错之外,根源的数据库错误是: sql 错误码 1366 字符集相关错误. uncategorized SQLException; SQL state ...
- MySQL支持Emoji表情
让MySQL支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节, ...
- mysql中emoji表情存储
mysql中emoji表情存储 背景 在mysql 5.7.19,创建的数据库默认选择的编码是utf8 -- UTF-8 Unicode,因此字段默认的编码为utf-8,但在项目开发中存在一个需求:在 ...
- mysql 支持emoji表情
在mysql插入emoji表情,出现错误: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8A' for column ' ...
- 让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)
手机端插入Emoji表情,保存到数据库时报错: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' ...
随机推荐
- 队列链式存储 - 设计与实现 - API函数
队列相关基础内容参我的博文:队列顺序存储 - 设计与实现 - API函数 队列也是一种特殊的线性表:可以用线性表链式存储来模拟队列的链式存储. 主要代码: // linkqueue.h // 队列链式 ...
- android应用资源预编译,编译和打包全解析
我们知道,在一个APK文件中,除了有代码文件之外,还有很多资源文件.这些资源文件是通过Android资源打包工具aapt(Android Asset Package Tool)打包到APK文件里面的. ...
- web报表工具FineReport使用中遇到的常见报错及解决办法(二)
web报表工具FineReport使用中遇到的常见报错及解决办法(二) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘 ...
- “万能数据库查询分析器” 5.03发布,访问EXCEL将自动为表名前后加上中括弧
"万能数据库查询分析器" 5.03发布,访问EXCEL将自动为表名前后加上中括弧 1 引言 中国本土程序员马根峰推出的个人作品----万能数据库查询 ...
- Android布局优化:include 、merge、ViewStub的详细总结
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要是对上篇博客的补充Android性能优化之UI渲染性能优化, 没有什么新东西,觉得应该是都掌握的玩意,写出来也只是自己做个小小的总结. ...
- html5中新增的非主体结构的元素
html5中出了新增了article.section.nav.aside.time主要结构元素外,还增加了一些表示逻辑结构或附加信息的非主体结构元素. 一.header元素 header元素是一种具有 ...
- javascript初学者必须注意的7个细节
[IT168 技术]每种语言都有它特别的地方,对于JavaScript来说,使用var就可以声明任意类型的变量,这门脚本语言看起来很简单,然而想要写出优雅的代码却是需要不断积累经验的.本文列举Java ...
- python自动重试第三方包retrying
最近写了一个爬虫,需要连接国外的一个网站,经常出现掉线的情况,自己写了一个自动重连的代码,但感觉不够简洁... 后来就上万能的github,找到了一个第三包,基本能满足我的要求.这个第三方包就是ret ...
- Mysql安装和登录相关操作
一.mysql的下载和安装 1.下载链接地址 http://dev.mysql.com/downloads/mysql/ 安装如下操作进行下载. 2.mysql数据库安装(Windows环境) 1.解 ...
- Assets.xcassets误删后的恢复
一般要是remove Reference,undo就ok了.如果undo没法搞得话,就得手动搞. 1.首先去废纸篓把被删除的目录恢复到原处,也就是项目目录. 2.右键项目主目录名称,选择"A ...