Emoji,这些能够表达情感的小卡通图像已经成为现代交流中不可或缺的一部分,以至于emoji这一单词已经在2015年被正式收入韦氏词典和牛津词典。说到emoji的诞生,这里还有一个很有趣的小故事:

1999年前后,日本一个名叫栗田穰崇的年轻人,和许多直男一样, 给女友发的短信经常会被误解。比如,“知道了”被解读成“生气了”、“不耐烦了”,随后引发冷战。 于是少年栗田想:“如果能在文字里插入一些表情符号来表达感情,大家应该会需要吧!”

原始的Emoji就这么诞生了

emoji 越来越流行,一个emoji 表情,有时胜过千言万语。尤其在移动端,很多用户喜欢把emoji 表情做为自己用户名称的一部分,例如微信中,就有很多朋友的用户名是这样的,如下:

这确实很好看,但这却给我们的应用程序带来了一定的问题。目前我们就碰到了一个因为用户名称中带有emoji 表情,导致数据无法存储的情况。

事情是这样的,我们的系统使用的数据库是MySQL,版本是5.5.31,最近我们发现我们的程序有不少报错,报错显示是有一些用户的数据无法保存,通过对报错日志分析,最终定位到是因为用户名中带有emoji 表情,导致数据存储失败。为什么会会数据会保存不了emoji表情呢?这里就牵涉到一个emoji的编码问题。

Emoji字符是Unicode字符集中一部分.

常见的Emoji表情符号在Unicode字符集中的范围和具体的字节映射关系, 可以在Emoji Unicode Tables中查看到.

有意思的是, 该表中还给出了同一个Emoji表情在不同系统或应用中的字体(是字体没错, Emoji的样式可通过字体文件改变)。

关于Emoji的最权威资料, 可以在Unicode® Emoji Charts上查阅到.

我们的MySQL是使用的utf8编码,但是因为UTF-8编码有可能是两个、三个、四个字节,其中Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以导致了数据插不进去。所以为了让MySQL支持emoji表情的存储,必须要使用utf8mb4 编码。

utf8mb4作为utf8的super set,完全向下兼容,所以不用担心字符的兼容性问题。切换中需要顾虑的主要影响是mysql需要重新启动。

在升级前需要确定几件事情:

1、MySQL的版本。MySQL的版本必须为5.5.3以上的版本,如果不是需要先升级MySQL,因为之前的版本不支持utf8mb4

2、如果你用的是java服务器,升级或确保你的mysql connector版本高于5.1.13,否则仍然无法使用utf8mb4 。其它语言的暂不清楚。

mysql 修改的操作步骤需要修改以下几个地方:

1、修改mysql配置文件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'

2、修改database、table字符集。参考以下语句:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3、重启mysql

4、检查字符集

character_set_system 的值是utf8没有关系,而且这个值不能改为utf8mb4,否则mysql 会启动不了。

好了,到此,数据就可以支持存储emoji 表情数据了。

总结:

1、由于目前移动互联网发展迅猛,并且emoji 越来越流行,所以为了避免在业务使用中升级MySQL字符集,最好是在部署MySQL的时候,就默认设置MySQL 支持 utf8mb4,因为utf8mb4是utf8的超集,是向下兼容,所以也不会影响utf8字符集的使用。

2、程序开发的时候,建库建表语句最好也指定库表的字符为 utf8mb4。

3、如果是已经在线的业务,而又不能重启MySQL的情况下,也可以通过应用层面转换emoji等特殊字符,以达到原数据兼容,在获取的时候,可以加一个标签注明,是否使用了emoji,这样取数据时,就再做转换就可。

mysql 对表情进行编码_emoji 表情与MySQL编码问题相关推荐

  1. 在mysql中怎么存储表情符号_Emoji表情符号在MySQL数据库中的存储

    在Android手机或者iPhone的各种输入法键盘中,会自带一些Emoji表情符号,如IPhone手机系统键盘包含的表情符号有: IPhone Emoji.png 如果在移动端发布文本内容时包含了这 ...

  2. php mysql 表情录入_Emoji表情符号录入MySQL数据库报错的解决方案

    mysql> 2,先去修改表字段字符集为utf8mb4: ALTER TABLE UGC_REVIEW_CONTENT MODIFY `CONTENT` TEXT CHARACTER SET u ...

  3. eomj表情 mysql_mysql存储4字节的表情包数据报异常_Emoji表情包_Incorrect string value: #3...

    本文章转载自:https://www.cnblogs.com/coprince/p/7485968.html 原文如下: 问题描述:从新浪微博抓取消息保存到MySQL数据中,对应数据库字段为varch ...

  4. mysql存储表情字符_MySQL 存储表情字符

    摘要 在 MySQL 中直接存储表情的时候,会出现无法插入数据的错误. 这是由于一般情况下,MySQL 的字符集是 utf8,而对于 emoji 表情的 mysql 的 utf8 字符集是不支持,需要 ...

  5. mysql 字符集 表情_MySQL字符集(表情包)

    目录 1. 问题 - MySQL插入表情包符号 2.解决方法 2.1针对字段修改编码格式(推荐使用) 2. 2.整个数据库修改编码格式 3. MySQL字符集 3.1 数据库字符集 3.1.1查看当前 ...

  6. emoji表情mysql报错_MySql存储emoji表情报错的处理方法

    mysql存储emoji表情报错的处理方法:更改编码为utf8mb4 uft-8编码可能2个字节.3个字节.4个字节,而MySql的uft-8只支持3字节的数据,而移动端的表情数据是4字节的字符.如果 ...

  7. mysql utf8mb4 emoji_mysql utf8mb4与emoji表情[转]

    MYSQL 5.5 之前, UTF8 编码只支持1-3个字节,只支持BMP这部分的unicode编码区, BMP是从哪到哪,到http://en.wikipedia.org/wiki/Mapping_ ...

  8. mysql emoji表情_Mysql支持emoji表情

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 支持 emoji 表情. 更多讨论或者错误提交,也请移步. 1. 前言 最近为博客添加了 ...

  9. mysql插入表情_向MySQL数据库中插入带emoji表情符的数据时报错

    问题:向MySQL数据库中插入带emoji表情符的数据时报错 原因:utf8字符集不支持emoji表情符,需要改为utf8mb4字符集(utf8mb4是MySQL在5.5.3之后增加的,实际开发中建议 ...

最新文章

  1. 2019版中国数字经济发展与就业白皮书
  2. 开发健壮的企业级应用的研究
  3. 一条数据的漫游奇遇记
  4. Cisco热备份路由协议(HSRP) 2
  5. JSP简单练习-使用JDOM创建xml文件
  6. mysql timestamp utc_MySQL 5.7 时间显示修改(log_timestamps UTC)
  7. 如何复制CSDN上他人的博客文章到自己博客下
  8. 阿里云 Centos 7 PHP7环境配置 LNMP
  9. sql 插入多行数据的问题
  10. python信用评分卡_基于Python的信用评分卡模型分析(二)
  11. dubbo 2.8.4(dubbox)的jar包制作【添加到maven本地仓库】
  12. 编程语言中,取余和取模的区别到底是什么?
  13. 拼装机器人感想_机器人学习心得总结
  14. 详细了解 clientWidth、clientHeight、clientLeft、clientTop 以及几个常用的场景
  15. 这 173 家牛逼的互联网国企!值得你加入
  16. 与骗子约会:浅谈欺诈性约会APP的生态
  17. 0_freeCAD_介绍,下载,语言设置
  18. 极致小巧的画图工具,只有548K,有20多种工具,图层功能 类PS
  19. 高等数学——曲线积分的计算(弧长)
  20. 服务器CPU占用率过高问题分析

热门文章

  1. 第十章:Electron 全局快捷键和剪切板
  2. 2023.1.11单词打卡
  3. 笔记本电脑升级后无法外接显示器,提示usb typec功能可能受限
  4. asp upload控件使用基本入门
  5. 这些加快Blender Cycles渲染的方法一定要学会
  6. 阿里巴巴如何「人才盘点」
  7. pc手机html5,HTML5 手机与PC的浏览器
  8. 欢迎加入互联互通社区高端社群
  9. UIScrollView 与 touchesBegan 冲突解决方法
  10. 前端innerText和value的区别