mysql处理emoji表情_Mysql处理emoji表情
在实际开发过程中,涉及到向mysql数据表中insert tweet,很多情况下会报错:
1 org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update2
3 at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)4
5 at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)6
7 at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)8
9 at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)10
11 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)12
13 at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)14
15 at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)16
17 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)18
19 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)20
21 at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)22
23 at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)24
25 at com.××××.××××.dao.TweetDaoImpl.saveTweet(TweetDaoImpl.java:63)26
27 at com.××××.××××.dao.CollectorFacadeImpl.saveTweetDate(CollectorFacadeImpl.java:36)28
29 at com.××××.××××.util.SavingTimerTask.run(SavingTimerTask.java:55)30
31 at java.util.TimerThread.mainLoop(Timer.java:512)32
33 at java.util.TimerThread.run(Timer.java:462)34
35 Caused by: java.sql.BatchUpdateException: Incorrect string value: '\xF0\x9F\x93\xBA\xF0\x9F...' for column 'body' at row 1
36
37 at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1257)38
39 at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:943)40
41 at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)42
43 at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)44
45 ... 12more46
原因是当前mysql的字符集为utf-8,最多3个字节,但遇到像emoji表情这样的特殊字符时,需要4个字节来表示。所以导致insert报错。
mysql> show character set;+----------+-----------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+-----------------------------+---------------------+--------+
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
+----------+-----------------------------+---------------------+--------+
解决办法:
1.备份数据库
2.升级Mysql Server到v5.5.3+
3.修改database,table,column字符集
# For each database:ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE =utf8mb4_unicode_ci;
#For each table:ALTER TABLE table_name CONVERT TO CHARACTER SETutf8mb4 COLLATE utf8mb4_unicode_ci;
#For each column:ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SETutf8mb4 COLLATE utf8mb4_unicode_ci;
# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)
4.修改my.ini(linux下为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,检查字符集:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec)
5.如果是用java连接的mysql,需要升级mysql-connector-java.jar至少到5.1.14
参考资料:
mysql处理emoji表情_Mysql处理emoji表情相关推荐
- mysql 过滤emoji表情_MySQL中emoji表情过滤
问题描述 最近在对线上排错过程中发现很多入库时产生的错误日志,表现形态如下 Incorrectstringvalue:'\xF0\x9F\x91\x8D\xE6\x94...'forcolumn'co ...
- java mysql emoj报错_MySQL插入emoji表情报错 SQLException: Incorrect string value 的两种解决方案...
原因:mysql的UTF-8只支持三个字节的存储,而一般字符是三个字节,但是emoji表情是4个字节,所以存储不了. 第一种方案:修改数据库表字符集 而mysql为了解决这个问题,在5.5.3版本之后 ...
- mysql 苹果表情_mysql 插入emoji表情的时候报错问题。(苹果手机)
一.问题现象 保存微信用户昵称到数据库,ios用户的昵称包含表情,插入数据库出错. 二.分析 使用JS过滤emoji表情的主要原因:input标签中输入emoji表情,提交表单后插入数据库报错. 原因 ...
- mysql emoji表情_Mysql支持emoji表情
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 支持 emoji 表情. 更多讨论或者错误提交,也请移步. 1. 前言 最近为博客添加了 ...
- mysql 字符集 表情_MySQL字符集(表情包)
目录 1. 问题 - MySQL插入表情包符号 2.解决方法 2.1针对字段修改编码格式(推荐使用) 2. 2.整个数据库修改编码格式 3. MySQL字符集 3.1 数据库字符集 3.1.1查看当前 ...
- mysql 添加ios表情符号_mysql - 如何用PHP匹配并替换iOS标准的emoji表情符号
遇到一个问题,要储存iOS键盘输出的emoji表情到MySQL,我知道用blob+utf8是可以存的.但是现在我的这张表已经太大了,不可能去改类型.所以就想把emoji表情匹配出来,替换掉,再存. 但 ...
- emoji 原生表情解析成对应表情包png
最近刚完成一个给客服用的客服软件,用的是c#,这里记录的是我的聊天窗口(控件webBrowser)里,采用html标签解析聊天内容,如何实现将emoji原生表情解析成对应表情包中的png. 首先win ...
- java 过滤微信昵称_java过滤微信昵称emoji表情与非emoji的问题解决方法
import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 过滤emoji表情与非emoji表情 * @author h ...
- 【博客表情包】emoji和符号表情包
[博客表情包]emoji和符号表情包 带图网站 博客使用 常见的心心 符号表情 感谢大家的博客,让我发现了很多有趣的技术,欢迎各位大佬在评论区补充~ 看到有的大佬博客标题带有
最新文章
- RamDisk - 充分利用Vista的大内存
- 最小生成树-prim算法模板
- [原创]微软拼音输入法2007(含64位版)
- HDU - 1253 胜利大逃亡(搜索)
- html2canvas改成同步,html2canvas转为图片异步转同步问题(记录)
- python--字符/文本编码解码笔记
- 机器视觉系统需要考虑的十个问题
- SHLVL 和 BASH_SUBSHELL 两个变量的区别
- 程序发布出现: 服务器无法处理请求---无法生成临时类(result = 1)。 错误CS2001:未能找到源文件“C:\ Windows \ TEMP \ lph54vwf.0.cs”...
- 30 分钟学 Erlang
- Git小结---So far.......
- UBUNTU安装EMQ
- 算法:Search in Rotated Sorted Array(搜索部分顺序被翻转的数组)
- 2019计算机保研经验记录:南开软院、武大、信工所、南大软院、哈工深
- CorelDRAW2022下载附带序列号安装教程
- 编程中的概念理解-回调和eTS开发语言
- 程序员必备的七个电脑软件
- 在移动硬盘里移动视频文件到移动硬盘 另外一个文件夹 显示正在计算_稳定可靠的数据之仓 柯达X200 SSD固态移动硬盘体验评测...
- js 全屏与退出全屏
- OpenJudge1758 二叉树
热门文章
- DS18B20的使用介绍
- liunx在线安装mysql/修改mysql密码/设置简单mysql密码
- ElasticSerach 出现 high disk watermark [90%] exceeded on
- Java练习之坦克大战!!!复制可以直接用!!!文章最后有飞机大战代码!!!
- python柱形图绘制_Python数据分析:柱形图的绘制方法
- python利用datetime库实现通过身份证号码判断年龄、男女,并输出生日
- Activity基础 - 任务栈
- Eclipes更改主题及字体
- Mac 上简体中文输入方式的键盘快捷键
- java-IO流(1)-IO流和File类的介绍