mysql表情存储报错问题
mysql采用utf-8字符编码,但在移动端使用输入法的表情并存储数据库的时候,出现错误。
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94'...
经排查,原因在于utf-8编码无法存储表情字符。
解决步骤:
- 更改数据库编码为utf8mb4和utf8mb4_unicode_ci
- 更改所需要存储表情的那张表的编码为utf8mb4和utf8mb4_unicode_ci
- 更改表中存储的那个字段的编码为utf8mb4和utf8mb4_unicode_ci
- 项目的数据库连接properties资源文件把URL的编码参数去掉
 经过以上的操作,表情可以存储到数据库了,但是出现问题是全部变成了??乱码
- 修改mysql配置文件my.cnf(windows为my.ini,linux为my.cnf)
 my.cnf一般在etc/mysql/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 init_connect='SET NAMES utf8mb4' 
- 重启mysql数据库,重新查看字符集
经过5、6两个步骤,最后成功存储表情,并且查询显示也是可以的。 除了这种方式,事实上,我们还可以对储存的数据进行编码,取的时候进行解码,这样也能解决这个问题,只是这种方式比较麻烦,你需要在所有存储该字段的地方编码,并在所有取用该字段的地方解码: try {
 URLEncoder.encode("sss", "utf8"); // 编码
 URLDecoder.decode("sss", "utf8"); // 解码
 } catch (UnsupportedEncodingException e) {
 e.printStackTrace();
 }
mysql表情存储报错问题的更多相关文章
- mybatis 表情存储报错问题解决
		修改mysql配置文件my.cnf(windows为my.ini) mac brew方式在/usr/local/etc/my.cnf my.cnf一般在etc/mysql/my.cnf位置.找到后请在 ... 
- 通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...
		原文:[原创]通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 'incorrect string value: '\xF0... 这篇blog重点在解决问题,如果你对 ... 
- MySQL主从1205报错【转】
		主从报错1205 Slave SQL thread retried transaction 10 time(s) in vain, giving up. Consider raising the va ... 
- CentOS命令登录MySQL时,报错ERROR 1045 (28000):
		CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解 ... 
- mysql执行update报错1175解决方法
		mysql执行update报错 update library set status=true where 1=1 Error Code: 1175. You are using safe update ... 
- Mysql update in报错  [Err] 1093 - You can't specify target table 'company_info' for update in FROM clause
		Mysql update in报错 解决方案: [Err] 1093 - You can't specify target table 'company_info' for update in FRO ... 
- mysql执行update报错 Err] 1055 - 'information_schema.PROFILING.SEQ' isn't in GROUP BY
		mysql执行update报错 Err] 1055 - 'information_schema.PROFILING.SEQ' isn't in GROUP BY 今天开发的同事发来如下错误信息,最最简 ... 
- 远程登陆linux连接mysql root账号报错:2003-can't connect to MYSQL serve(转)
		远程连接mysql root账号报错:2003-can't connect to MYSQL serve 1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改roo ... 
- 远程连接mysql root账号报错:2003-can't connect to MYSQL serve(转)
		远程连接mysql root账号报错:2003-can't connect to MYSQL serve 1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改roo ... 
随机推荐
- day02.5-集合内置方法
			集合——set的定义:test = {1,2,3,4,5} 或 test = frozenset(1,2,3,4,5) 特点:1. 集合是可变数据类型 2. 集合中元素是无序的,可以是数字.字符串与元 ... 
- “全栈2019”Java第六十七章:内部类、嵌套类详解
			难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ... 
- ios 相机 自定义 相片的截取
			前段时间公司需要做一个身份识别的功能,而系统相机无法满足要求,so自己自定义了. 上代码: .h文件 #import <UIKit/UIKit.h> #import <AVFound ... 
- java多线程那点事
			屌丝程序员们对自己的技术能力总是毫不掩饰的高调,更有甚者每当完成一个简单的功能或算法实现,恨不得从工位上跳起来,生怕谁不知道一样,心情能理解,但个人完全鄙视这种行为.说到底,大家日常的coding,大 ... 
- mysql的联合索引的误解
			https://www.zhihu.com/question/36996520 之前对于联合索引有一个误区, 假设 name,age为一个联合索引 5条索引记录 a 10 b 5 c 12 c 15 ... 
- 方法引用(Method reference)和invokedynamic指令详细分析
			方法引用(Method reference)和invokedynamic指令详细分析 invokedynamic是jvm指令集里面最复杂的一条.本文将详细分析invokedynamic指令是如何实现方 ... 
- CentOS虚拟机断电或强制关机,再开机出现问题:Entering emergency mode. Exit the shell to continue.
			解决问题: 输入命令:xfs_repair -v -L /dev/dm-0 
- css第一篇:元素选择器
			1:多个选择器 h1, h2 {} ——h1或h2标签的所有元素 2:通配选择器 * {} ——所有元素 3:元素选择器 div {} ——所有div元素 4:类选择器 .te ... 
- Q394 字符串解码
			给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. 你可 ... 
- 推荐-Everything搜索工具
			简介: windows操作系统下极其强大的文件搜索工具. 下载: https://www.voidtools.com/downloads/ 推荐理由: 速度之快难以想象,日常工作必备工具之一. 发现的 ... 
