Emoji表情符号在MySQL数据库中的存储
文章转自https://www.jianshu.com/p/20740071d854
在Android手机或者iPhone的各种输入法键盘中,会自带一些Emoji表情符号,如IPhone手机系统键盘包含的表情符号有:
如果在移动端发布文本内容时包含了这种Emoji表情符号,通过接口传递到服务器端,服务器端再存入MySQL数据库:
对gbk 字符集的数据库,写入数据库的数据,在回显时,变成 ‘口口’ 无法回显;
对utf8 字符集的数据库,则根本无法写入数据库,程序直接报出异常信息
java.io.exception xxxxxxxx.
原因分析:
Emoji表情符号为4个字节的字符,而 utf8 字符集只支持1-3个字节的字符,导致无法写入数据库。
解决方案:
遍历输入的文本,把四字节长度的字符,修正为自定义的字符替换掉。
修改MySQL数据库字符集, 把数据库字符集从utf8 修改为支持1-4 个字节字符的utf8mb4。
事实上可以看出,第一种方案的工作量较大,并不可取。推荐使用第二种方案,修改数据库字符集。从MySQL 5.5.3版本开始,数据库可支持4个字节的utf8mb4 字符集,一个字符最多可以有4个字节,所以能支持更多的字符集,故能存储Emoji表情符号。从 mysql 5.5.3 之后版本基本可以无缝升级到 utf8mb4 字符集。同时,utf8mb4兼容utf8字符集,utf8 字符的编码、位置、存储在utf8mb4与utf8字符集里一样的,不会对有现有数据带来损坏。
升级方案:
修改数据库字符集character-set-server=utf8mb4 重启数据库生效。
修改database 的字符集为 utf8mb4 alter database dbname character set utf8mb4
修改表的字符集 为utf8mb4 , alter table character set = utf8mb4
附上:
Emoji 全编码字符集:IOS Emoji
作者:亦枫
链接:http://www.jianshu.com/p/20740071d854
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Emoji表情符号在MySQL数据库中的存储的更多相关文章
- Emoji表情符号录入MySQL数据库失败解决
让MySQL支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节, ...
- Emoji表情符号录入MySQL数据库报错的解决方案(MySQL utf8与utf8mb4区别)
本文转自:http://blog.itpub.net/26230597/viewspace-1243233/前言:手机app应用评论的时候,恢复表情符号,提示失败. 1,查看tomcat后台日志,核心 ...
- Emoji表情符号录入MySQL数据库报错
版本一: 1,查看tomcat后台日志,核心报错信息如下: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\ ...
- Emoji表情符号录入MySQL数据库报错的解决方式
前言:手机app应用评论的时候,恢复表情符号.提示失败.1,查看tomcat后台日志,核心报错信息例如以下: Caused by: java.sql.SQLException: Incorrect ...
- Emoji表情符号录入MySQL数据库报错的解决方案
原文:http://blog.itpub.net/26230597/viewspace-1243233/ 1,查看tomcat后台日志,核心报错信息如下: Caused by: java.sql.S ...
- 移动端的emoji表情符号插入MySQL数据库失败
插入数据时候报了错:### Error updating database. Cause: Java.sql.SQLException: Incorrect string value: ‘\xF0\x ...
- MySQL数据库中的存储引擎
1.认识存储引擎 存储引擎指定了表的类型,即如何存储和索引数据.是否支持事务等,同时存储引擎也决定了表在计算中的存储方式. 存储引擎是以插件的形式被MySQL软件引入的,所以可以根据应用.实际的领域来 ...
- 个人总结-7- 实现图片在MySQL数据库中的存储,取出以及显示在jsp页面上
昨天主要是进行对数据库的内容提取出来并进行动态显示,这个只需要设置一个servlet从数据库中获取数据即可,只是图片比较特殊,不能显示. 今天准备继续找方法来实现图片得录入和显示到jsp中,准备从网上 ...
- mysql数据库中的存储引擎是什么意思呢
需求描述: 在看mysql的内容,经常提到存储引擎,那么到底什么是存储引擎呢 在这里对于概念进行理解,记录下. 概念解释: 存储引擎(storage engine):存储引擎就是mysql中的一个组件 ...
随机推荐
- SQLServer 2008R2 清理日志文件
设置数据库为简单模式 2.收缩日志文件 3.恢复数据库为完整模式
- ECMAScript typeof用法
typeof 返回变量的类型字符串值 .其中包括 “object”.“number”.“string”.“undefined”.“boolean”. 1.在变量只声明.却不初始化值 Or 在变量没 ...
- pip install 报错
问题描述,在使用pip安装django相关软件包时,提示错误如下: [root@test4 install]# pip install django==1.6 Downloading/unpackin ...
- ArcGIS for Server 的修改IP问题
ArcGIS for Server 的修改IP问题 1. [arcgisserver@centos6 ~]$ vi /home/arcgisserver/serverconfig/config ...
- loadrunner 运行脚本-Run-time Settings-Browser Enmulation设置详解
运行脚本-Run-time Settings-Browser Enmulation设置详解 by:授客 QQ:1033553122 浏览器模拟 所有Internet Vuser Header包含一个标 ...
- 安卓开发-设置RadioButton的点击效果
在安卓开发中用到底部菜单栏 需要用到RadioButton这个组件 实际应用的过程中,需要对按钮进行点击,为了让用户知道是否点击可这个按钮,可以设置点击后 ,该按钮的颜色或者背景发生变化. layou ...
- Flutter 布局(八)- Stack、IndexedStack、GridView详解
本文主要介绍Flutter布局中的Stack.IndexedStack.GridView控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Stack A widget that po ...
- 2018最新大厂Android面试真题
前言 又到了金三银四的面试季,自己也不得不参与到这场战役中来,其实是从去年底就开始看,android的好机会确实不太多,但也还好,3年+的android开发经历还是有一些面试机会的,不过确实不像几年前 ...
- Android滑动菜单使用(MenuDrawer和SlidingMenu)
项目地址: https://github.com/gokhanakkurt/android-menudrawer https://github.com/jfeinstein10/SlidingMe ...
- SolrCloud集群搭建(基于zookeeper)
1. 环境准备 1.1 三台Linux机器,x64系统 1.2 jdk1.8 1.3 Solr5.5 2. 安装zookeeper集群 2.1 分别在三台机器上创建目录 mkdir /usr/hdp/ ...