mysql数据库支持emoji表情的详解
mysql存储emoji表情的时候,就会报错,如下:
Error updating database. Cause: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8A\xF0\x9F…’ for column ‘这是我表中的字段’ at row 1
初步定位是我的数据库是utf8编码,不支持emoji表情,需要改成utf8mb4编码
具体原因:
emoji表情需要4个字节存储
mysql的utf8编码的一个字符最多3个字节,所以不够了就报错
解决如下
1.mysql将字符集 utf8改utf8mb4:
ALTER TABLE 你的表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
2.修改数据源配置
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="${mysql.url}" /><property name="username" value="${mysql.user}" /><property name="password" value="${mysql.password}" /><!-- 设置编码,支持表情存储--><property name="connectionInitSqls" value="set names utf8mb4;"/>
</bean>
扩展:
1、mysql编码:utf8和utf8mb4的区别:
看官网文档:https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
utf8mb4: A UTF-8 encoding of the Unicode character set using one to four bytes per character.
utf8mb4: Unicode字符集的UTF-8编码,每个字符使用1到4个字节。
utf8mb3: A UTF-8 encoding of the Unicode character set using one to three bytes per character.
utf8mb3: Unicode字符集的UTF-8编码,每个字符使用一到三个字节。
utf8: An alias for utf8mb3.
utf8: utf8mb3的别名。
UTF-8是使用1~4个字节,一种变长的编码格式。
MySQL中的utf8是utfmb3,只有三个字节,节省空间但不能表达全部的UTF-8,只能支持“基本多文种平面”(Basic Multilingual Plane,BMP)。
总结:编码一般都使用utf8mb4。
utf8扩展,除了mb3,mb4,还有以下:
ucs2: The UCS-2 encoding of the Unicode character set using two bytes per character.
ucs2: Unicode字符集的UCS-2编码,每个字符使用两个字节。
utf16: The UTF-16 encoding for the Unicode character set using two or four bytes per character. Like ucs2 but with an extension for supplementary characters.
utf16: Unicode字符集的UTF-16编码,每个字符使用两个或四个字节。就像ucs2一样,但是有一个补充字符的扩展。
utf16le: The UTF-16LE encoding for the Unicode character set. Like utf16 but little-endian rather than big-endian.
utf16le: Unicode字符集的UTF-16LE编码。类似于utf16,但是是little-endian(小端)而不是big-endian(大端)。
utf32: The UTF-32 encoding for the Unicode character set using four bytes per character.
utf32: Unicode字符集的UTF-32编码,每个字符使用四个字节。
2、mysql排序:utf8_bin和utf8_general_ci和utf8_unicode_ci的区别
ci是 case insensitive, 即 “大小写不敏感”, a 和 A 会在字符判断中会被当做成一样的;
bin 是二进制, a 和 A 会别区别对待.
utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法,一些字符还是不能支持。
SELECT * FROM user WHERE name = 'a’查询时,
使用utf8_bin排序就找不到name = 'A’的那行
使用utf8_general_ci排序就能找到name = 'A’的那行
整理:utf8_bin区分大小写,utf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性也够我们用的了
总结:排序一般都使用utf8_general_ci
mysql数据库支持emoji表情的详解相关推荐
- mysql数据库支持emoji表情特殊字符
文章目录 一.背景问题 二.window下设置utf8mb4 1.修改mysql配置文件 2.重启mysql服务 3.设置库.表字符集 三.linux下设置utf8mb4 1.修改配置 2.重启服务 ...
- linux下mysql数据库基础及客户端命令详解
linux下mysql数据库基础及客户端命令详解 1.mysql数据库存储引擎: SHOW ENGINES; #查看mysql支持的存储引擎 常见有如下两个存储引擎: MyISAM:每表三个文件: ...
- oracle数据库中的系统自带表情_教你如何让数据库支持emoji表情符存储
一.教你如何让数据库支持emoji表情符存储 解决方式: 更换字符集utf8-->utf8mb4 问题描述: 前台应用抓取微博信息,每天总有几条数据插入不成功.应用日志显示: java.sql. ...
- mysql不支持emoji表情的问题的解决方法
mysql不支持emoji表情的问题的解决方法 参考文章: (1)mysql不支持emoji表情的问题的解决方法 (2)https://www.cnblogs.com/flywang/p/851420 ...
- 【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标
目录 前言 一.uniapp 实现点击复制某段文本 二.MySQL 数据库存储 emoji 表情 三.Layui 的富文本编辑器 四.谷歌 Java 二维码生成 (1) 引入 MAVEN 依赖 五.微 ...
- MYSQL数据库与Emoji表情的故事
问题背景 手机上众多输入法和键盘支持输入 emoji 表情,给早期设计的程序造成了越来越多的干扰. 移动端购物的流行,2018 年 "双十一"全网移动端交易达到 93.6% 微信年 ...
- mysql数据库性能优化—my.cnf详解
MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...
- Mysql数据库存储emoji表情
一.起源 我想让我的新闻评论内容能更加丰富~话不多说. (1)改变Navicat中的字段的字符集 然后发现还是没办法存进去正确的emoji表情嘞.(失败了) (2)找到mysql数据库配置文件 ...
- mysql数据库自动备份脚本(详解)
脚本内容: #!/bin/bash #功能说明:本功能用于备份mysql数据库 #编写日期:2018/05/17 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/loc ...
最新文章
- Java开发的几个注意点
- sap中Excel的模版上传和下载
- Java初学者推荐学习书籍free下载
- golang定时任务的使用
- 077 Combinations 组合
- 【渝粤教育】国家开放大学2018年秋季 2115T人体解剖学与组织胚胎学 参考试题
- MyBatis可视化代码生成工具
- Microsoft Edge导出浏览历史记录
- Android仿人人客户端(转)
- 斑马Zebra 110Xi4 打印机驱动
- String StringBuffer StringBuild区别?
- 彻底解决Chrome自动更新方案
- HDU 6143 Killer Names【容斥定理】【排列组合】
- 与浏览网站的访客直接进行QQ对话
- 程序媛 :逛 GitHub 开源项目吗? 很沙雕的那种!
- 如何写出高质量的文章:从战略到战术
- CREO图文教程:三维设计案例之足球设计图文教程之详细攻略
- Ubuntu 18.04 LTS 安装JDK1.8-Linux-64
- Linux 重启网络服务
- 头条的动态页面爬取+百度下拉搜索框