背景

在mysql 5.7.19,创建的数据库默认选择的编码是utf8 -- UTF-8 Unicode,因此字段默认的编码为utf-8,但在项目开发中存在一个需求:在某个字段中存储混有emoji表情的字符串,此时以普通编码格式如utf8来存储emoji表情时,会报

org.springframework.orm.jpa.JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement

...

Caused by: org.hibernate.exception.GenericJDBCException: could not execute statement

...

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x95\xE2\x80...' for column 'android_id' at row 1

请求的实例

1578993398622.png

解决方案

把android_id这个字段的编码格式改为:utf8mb4,如在Navicat中修改:

1578993290834.png

修改mysql的配置

Windows下:在my.ini配置文件的[mysqld]下面添加:character_set_server=utf8mb4

重启mysql服务

在服务中找到mysql,点击重启

以上三步操作后就可以愉快的存储emoji表情啦。

小结

utf8与utf8mb4的区别:

UTF-8编码中,一个英文字符占用一个字节的存储空间,一个中文(含繁体)占用三个字节的存储空间。

UTF8MB4:MySQL在5.5.3之后增加了utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。因此可以用来存储emoji表情。

拓展

当同时对编码类型为utf8的validated字段 和utf8mb4的android_id 字段联合查询时

在spring data jpa中查询会报该异常

List findByAndroidIdAndValidated(String androidId, boolean flag);

异常如下

Caused by: java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

而在Navicat中使用sql查询并不会报错

SELECT * FROM `toilet` where android_id = 'Miss.龙

emoji表情 mysql转移,mysql中emoji表情存储相关推荐

  1. MySQL 字符串删除表情符_字符串中Emoji表情处理

    吃了经验的亏,因为Emoji表情引起的项目bug被撸主遇到两次了,总有一些调皮的小朋友爱用表情来搞点事.第一次把当时那个表改为utf8mb4解决了,第二次说啥都不好使.网上找了半天,发现好多人不去实验 ...

  2. 关于mysql叙述中错误的是什么_以下关于MySQL的叙述中,错误的是( )。_学小易找答案...

    [单选题]以下关于外键约束的描述不正确的是() [单选题]在创建视图的SQL语句中,保留字AS之后接续的是(). [单选题]按照国家标准规定,一般抽屉桌下沿距离坐面至少()左右的净空. [多选题]工作 ...

  3. 给大佬递java表情_给大佬端东西表情包app,给大佬递东西表情包图片大全免费版预约 v1.0-手游汇...

    给大佬端东西表情包app是一款非常有趣的全新表情包服务应用,为用户带来各种各样的图片表情,这个表情包就是围绕着大佬,给大佬们递上各种各样的东西,配上最有趣的蘑菇头外表,让这个图片表情变得更好看更有趣, ...

  4. mysql 过滤微信昵称表情_PHP正则过滤处理微信昵称中emoji字符的方法

    本文实例讲述了PHP正则过滤处理微信昵称中emoji字符的方法.分享给大家供大家参考,具体如下: 今天刚做了一个微信应用,在获取微信昵称的过程中报错了,经查原因是微信昵称中包含emoji字符,在写入数 ...

  5. 表情符号mysql utf8mb4_mysql utf8mb4与emoji表情

    一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里 ...

  6. 当mysql遇到爱疯emoji表情

    2019独角兽企业重金招聘Python工程师标准>>> 字符创中遇到爱疯的emoji表,普通mysql不支持怎么办? 解决1:配置mysql编码为 utf8mb4字符集,mysql必 ...

  7. mysql存微信你曾_Mysql存储微信Emoji表情问题

    问题 Tomcat 中报 Java 如下错误: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8D\x87 \xE7...' fo ...

  8. mysql emoji表情_让MySQL支持Emoji表情 mysql 5.6

    最近在做微信相关的项目,其中MySQL 要存储emoji表情,因此发现我们常用的utf8 字符集根本无法存储表情.网上有不少替代方案.本人还是采用了修改MySQL字符集的方案简单快捷. 首先将我们数据 ...

  9. Emoji输入法表情过滤,方式mysql存储不下

    package charset; import org.apache.commons.lang.StringUtils; /** * 输入法表情过滤,方式mysql存储不下,目前mysql只能支持1- ...

  10. php处理emoji表情方法,PHP实战:3种方法轻松处理php开发中emoji表情的问题

    <PHP实战:3种方法轻松处理php开发中emoji表情的问题>要点: 本文介绍了PHP实战:3种方法轻松处理php开发中emoji表情的问题,希望对您有用.如果有疑问,可以联系我们. 背 ...

最新文章

  1. U平方Net:深入使用嵌套的U型结构进行显著目标检测
  2. Ubuntu:最简单的Ubuntu安装工具Wubi
  3. 高性能MySQL(二)
  4. oracle检查外键依赖,Oracle中检查外键是否有索引的SQL脚本分享
  5. ipython文件每次打开重新运行吗_iPython中的多处理:当我不打开任何文件时打开的文件太多?...
  6. day22,ConfigParser,subprocess,xlrd三个模块
  7. vbs读取服务器上的txt文件,用VBS读取每行一行的txt文件
  8. 饭卡可以用水冲洗吗_关于饭卡使用与管理的规定
  9. 泰坦尼克号幸存者预测
  10. 面试题:线上CPU飙高如何排查
  11. java openoffic linux_windows/linux服务器上java使用openoffice将word文档转换为PDF(亲测可用)...
  12. java的inputbox_InputBox函数的使用方法
  13. 12032 解救小哈
  14. 月亮私房菜——秘制辣椒油!让你辣得够味!辣得过瘾!
  15. 高仿新闻教程--新闻Item的布局复习(3)
  16. 红轴和青轴哪个手感好 红轴和青轴哪个玩游戏好
  17. 信息系统开发与管理【四】之 总体规划
  18. linux 纪元时间转换,[转]Linux下时间函数time gettimeofday
  19. Java生成微信小程序二维码,5种实现方式,一个比一个简单
  20. 记一次 Centos7 yum 安装、配置 PgAdmin4

热门文章

  1. 成功解决IPython.core.display.HTML object
  2. 编译器处理虚函数的原理
  3. 比较IC卡、ID卡、M1卡、CPU卡它们之间有什么区别
  4. VR和AR的联系和区别
  5. WRF运行wrf.exe出现forrtl: severe (174): SIGSEGV, segmentation fault occurred问题原因与解决合集
  6. OpenAi ChatGPT注册及使用教程
  7. android缓存清理代码,安卓缓存清除和计算
  8. 属于程序员的“高考”考题,我估计没准还有很多人没有看过(建议不要收藏)
  9. 邮箱密码忘了怎么找回
  10. 为什么趁年轻就应该去创业?