一、教你如何让数据库支持emoji表情符存储

解决方式:

更换字符集utf8-->utf8mb4

问题描述:

前台应用抓取微博信息,每天总有几条数据插入不成功。应用日志显示:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column 'raw_json' at row 1, 异常:org.springframework.jdbc.UncategorizedSQLException:

其中raw_json字段显示如下:

由上图可知,插入的字段里面包含emoji表情符。基本可以判定是字符编码的问题。我们的数据库里面使用的是utf8编码,普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、涉及无线相关的 MySQL 数据库建议都提前采用utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点。

utf8与utf8mb4说明:

UTF- 8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。

UTF8MB4:MySQL在5.5.3之后增加了utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。

既然找到了原因就来执行吧.既然只有raw_json列含表情符,就先尝试修改此列的字符集:

ALTER TABLE xx_pnl_weibo_usershow

MODIFY ` raw_json` varchar(3000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

改完后测试,插入失败。

尝试修改表的字符集:

alter table xx_pnl_weibo_usershow CHARSET=utf8mb4 ; (修改表的默认字符集)

alter table xx_pnl_weibo_usershow CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;(修改表和字段的字符集)

改完后测试,插入失败。

修改库级别的字符集

vi /etc/my.cnf

[client]

default-character-set=utf8mb4

[mysqld]

character-set-server = utf8mb4

service mysqld restart

改完后测试,插入成功。查看插入的数据:

root@localhost zx_prod >select id,raw_json,hex(raw_json),length(raw_json) from  xx_pnl_weibo_usershow where id=2;

+----+------------------+----------------------------------+---------------------+

| id | raw_json | hex(raw_json) | length(raw_json) |

+----+------------------+----------------------------------+---------------------+

| 2 |  | F09F9894F09F9882F09F9898F09F9894 | 16 |

+----+------------------+----------------------------------+---------------------+

1 row in set (0.00 sec)

因为是线上生产业务,需要先在测试环境做好测试工作。避免业务高峰期,线上申请停机窗口操作。

emoji表情编码参考:

oracle数据库中的系统自带表情_教你如何让数据库支持emoji表情符存储相关推荐

  1. oracle数据库中的系统自带表情_Oracle数据库自带表空间的详细说明

    需求: 需要整理现场用户创建的表空间以及其存储数据,进行规范化管理.在整理用户现场建立的表空间时,需要排除掉非用户创建的表空间,所有首先需要那些表空间是用户创建的,那些是Oracle自带的. 本机测试 ...

  2. oracle数据库中的系统自带表情_oracle 系统自带几个常用函数

    今天给各位刚入门的oracle sql的朋友说一些系统自带的常用函数,通过函数来实现某些效果会非常的省事便捷,函数可以用在适当的dml语句和查询语句中. 我们今天所有的示例都为scott模式下的emp ...

  3. php mysql emoji表情_php 让MySQL支持Emoji表情 mysql 5.5.3+

    让MySQL支持Emoji表情 mysql 5.5.3+ 让mysql支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. mysql 版本 5.6 1 解决 ...

  4. 在Android系统中使用系统自带的emoji表情

    一,对emoji表情的理解 emoji表情是一种表情符号,在代码中它现在其实是一组遵循Unicode的编码,即每一个表情符号都对应了一个Unicode编码.更进一步说,emoji表情实际上是一组Uni ...

  5. android 自带的表情,在Android系统中使用系统自带的emoji表情

    一,对emoji表情的理解 emoji表情是一种表情符号,在代码中它现在其实是一组遵循Unicode的编码,即每一个表情符号都对应了一个Unicode编码.更进一步说,emoji表情实际上是一组Uni ...

  6. iOS程序中调用系统自带应用(短信,邮件,浏览器,地图,appstore,拨打电话,iTunes,iBooks )...

    在网上找到了下在记录下来以后方便用 在程序中调用系统自带的应用,比如我进入程序的时候,希望直接调用safar来打开一个网页,下面是一个简单的使用: 查看更多iPhone应用程序的调用和第三方应用程序的 ...

  7. oracle如何插入系统时间,如何在Oracle表中插入系统时间

    导读:以下的文章主要是通过实际应用代码的方式来引出向Oracle表中正确插入实际的系统时间的实际操作,希望对大家能够有所帮助. 1.SQL> insert into test values(2, ...

  8. mysql存储emoji表情_MySQL中支持emoji表情的存储

    由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码 ...

  9. mysql存储ios表情_MySQL中支持emoji表情的存储

    由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码 ...

最新文章

  1. CPU 周期信号、节拍周期信号、节拍脉冲信号三者之间的关系是什么?
  2. 【教程】Linux DNS 服务器安装、配置及维护
  3. mysql 安装gbk字符_mysql安装后添加gbk字符集的方法
  4. RabbitMQ在Windows环境下部署(简单有效)
  5. CCF NOI1028 判断互质
  6. 强联通块tarjan算法
  7. 关于‘挖矿’minerd
  8. Java8 Stream + +很不错的文章集合
  9. Chinese_PRC
  10. xp系统怎样安装传真服务器,Windowsxp系统下设置传真接收的详细步骤
  11. 程序员高手必会的十大编程算法
  12. matlab 自制闹钟程序,原生JS写的一个简单闹钟程序
  13. 设计师出差必备的5款移动端设计软件
  14. 计算机软著发明,时健
  15. 苹果新版iOS疯狂致敬安卓和微信,新Mac搭载自研CPU!这届苹果开发者大会料足槽点密...
  16. 必备模块知识——继电器
  17. Java抽象类和接口使用_Java 抽象类和接口
  18. Remix本地环境搭建
  19. 2018年 吉林大学 软件工程 967考研经验分享
  20. 自己的JS框架--Amy框架。

热门文章

  1. linux 服务器访问限制,Linux中限制用户访问权限的3种方法
  2. 德语计算机相关的动词,德语常用计算机词汇汇总
  3. H5满屏彩色泡泡小特效(适合表白哦~做完发给让你每天想念的人吧~)
  4. 《海豚湾》网友评论转载
  5. 【R语言】ggplot2:初次见面,请多多关照!
  6. 关于SASL的介绍文档
  7. 杂谈技术·油猴脚本的功能实现
  8. 免费滴永恒G,试试无妨
  9. java arraylist 添加_java ArrayList添加元素全部一样
  10. layui 下拉框多选