emoji表情mysql报错_MySql存储emoji表情报错的处理方法
mysql存储emoji表情报错的处理方法:更改编码为utf8mb4
uft-8编码可能2个字节、3个字节、4个字节,而MySql的uft-8只支持3字节的数据,而移动端的表情数据是4字节的字符。如果直接采用utf-8编码的数据库中插入表情数据,Java程序将报错:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)
解决方法之一是对4字节的字符进行编码存储,然后取出来的时候,再进行解码。这样做的话就会使得任何使用该字符的地方都要进行解码和编码。
utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。
采用utf8mb4的好处是:存储与获取数据的时候,不用考虑编码和解码的问题
解决办法
更改数据库的编码为uft8mb4
1.MySql的版本
utf8mb4的最低版本支持版本为5.5.3+
2.MySql驱动
5.1.34可用,最低不能低于5.1.13
3.修改MySql配置文件
修改mysql的配置文件my.cnf,linux环境下一般在/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'
4.重启数据库,检查变量
登录mysql后输入:SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
确保一下几个变量:
系统变量
描述
character_set_client
客户端来源数据使用的字符集
character_set_connection
连接层字符集
character_set_database
当前选中数据库的默认字符集
character_set_results
查询结果字符集
character_set_server
默认的内部操作字符集
这几个变量必须是utf8mb4.
同时,数据库和建好的表也转化为utf8mb4.
5.数据库连接的配置
数据库连接参数中:
characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。
而autoReconnect=true是必须加上的。
经过上面的步骤,就可以实现在mysql数据库中存储emoji表情了。
emoji表情mysql报错_MySql存储emoji表情报错的处理方法相关推荐
- nodejs项目mysql使用sequelize支持存储emoji
nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...
- mysql 图标图标_MySQL 支持 emoji 图标存储
在MySLQ中 UPDATA 和 INSERT 数据的时候,如果数据上面带有emoji图标,例如:?.?.? 很容易更新或者插入不成功,导致报错. 都快崩溃了,但是还好终于解决了这种鬼问题.资料显示原 ...
- mysql 显示表情符号_mysql 支持emoji 表情字符的解决方法。
1.utf8 字符集最多3个字符,而emoji表情字符是unicode大字符集,需要4个字节表示,所以utf8无法表示. mysql要存储emoji字符,需要设成utf8mb4字符集,意思就是utf8 ...
- mysql 参照完整性规则_MySQL存储引擎你们知道多少?
MySQL存储引擎技术详解点击观看! MySQL是我们经常使用的数据库处理系统(DBMS),不知小伙伴们有没有注意过其中的"存储引擎"(storage_engine)呢?有时候面试 ...
- mysql模板引擎_MYSQL存储引擎解释
存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念, MySQL支持多种存储引擎,每种引擎有着一些自己独特的功能,用户在使用的时候,可以根 ...
- MySQL占用系统进程_MySQL的Sleep进程占用大量连接解决方法
第一部分为产生大量sleep进程的原理及对应解决方法 第二部分为设置wait_timeout值,有效减少sleep进程 ======================================== ...
- mysql数据库包含_MySQL数据库判断字符串包含的三种方法
方法一:SELECT * FROM users WHERE emails like "%b@email.com%"; 方法二: 利用 mysql 字符串函数 find_in_set ...
- java mysql emoj报错_MySQL插入emoji表情报错 SQLException: Incorrect string value 的两种解决方案...
原因:mysql的UTF-8只支持三个字节的存储,而一般字符是三个字节,但是emoji表情是4个字节,所以存储不了. 第一种方案:修改数据库表字符集 而mysql为了解决这个问题,在5.5.3版本之后 ...
- mysql 字符图标 报错_MySQL支持emoji图标存储
在MySLQ中 UPDATA 和 INSERT 数据的时候,如果数据上面带有emoji图标,例如:
最新文章
- Linux下新增硬盘处理过程
- 为什么二级菜单会被挡住_武夷红茶为什么是二级茶?我们平时喝的红茶会不会被加了糖?...
- vi查找替换命令详解
- GitHub上最受欢迎的Android开源项目TOP20
- linux 命令输出保存为文件的三种方式
- jquery地址栏链接与a标签链接匹配添加样式!
- linux推出超级用户_linux添加root权限用户
- 如何文件服务器安装打印机,如何安装打印机方法图解
- (转)淘淘商城系列——使用maven tomcat插件启动web工程
- Linux-shell编程_xargs命令详解
- 浅谈逻辑漏洞:越权漏洞、密码找回漏洞、支付逻辑漏洞、指定账户恶意攻击、登录体系安全、业务一致性安全、业务数据篡改、验证码突破、数据重放安全
- C语言中if语句例题详解
- AltiumDesigner多通道复用设计教程(亲测可行版本)
- 采样点数与采样频率的区别
- 信号发生器-电路与电子技术课程设计
- MSP430F5529LP 2022电赛学习准备及相关例程
- 新闻组上看到一篇关于linux内核编译的文章,留待日后参考。
- Android中的多点触控(装载)
- Squirrel3 RC1 版本发布
- 如何证明是sci论文?