Mysql保存emoji表情
Mysql保存emoji表情
Emoji 在我们生活中真的是越来越常见了,几乎每次发消息的时候不带个 Emoji,总觉得少了点什么,似乎干巴巴的文字已经无法承载我们丰富的感情了。对于我们开发者来说,如何将 Emoji 存入 MySql 数据库或者取出来,就变成了一种必须掌握的技能了。
Emoji 是一种图形符号,能够很直观地反应出某种文字含义。它让我想起远古时代的象形文字
- 糟糕
如果我们直接将 Emoji 表情存入数据库的话,通常会出现下面这个错误。
mysql库不能修改为utf8mb4编码,但又想存emoji表情怎么办?
因为数据库的字符编码一般是 utf8(支持的编码范围为 \u0000-\uFFFF),而 Emoji 所在的编码范围是 \u1F601-\u1F64F,超出 MySql 的边界了。
怎么解决这个问题呢?
一、utf8mb4
可以将 MySql 的字符集由 utf8 调整为 utf8mb4。utf8mb4 是 MySql 在 5.5.3 版本之后增加的一个编码方式,用来兼容四字节的 Unicode(包括 Emoji)。
理论上,utf8mb4 是 utf8 的超集,其中 mb4 是 most bytes 4 的意思,将字符集修改为“utf8mb4”,并不会对已有的 utf8 编码读取产生任何问题。
但通常这种方式并不是最优解,因为应用层还需要将 MySql 的连接方式作出以下调整:
jdbcUrl = jdbc:mysql://localhost/jfinal_demo?characterEncoding=utf8mb4&useSSL=false&zeroDateTimeBehavior=convertToNul
由原来的 characterEncoding=utf8 调整为 characterEncoding=utf8mb4。
二、EmojiConverter
更友好的解决方式应该将 Emoji 当做字符串存储,然后在取出来的时候再转成 Emoji,这样可以兼容所有的数据库版本。
我在 GitHub 上找到了这样的一个库——EmojiConverter,它可以很方便地将 Emoji 转换为字符串的别名,同时也支持将这个别名转换为 Emoji。
1)在 pom.xml 文件中加入 EmojiConverter
<dependency><groupId>com.github.binarywang</groupId><artifactId>java-emoji-converter</artifactId><version>0.1.1</version>
</dependency>
2)存储 Emoji 之前调用 toHtml() 方法转换一下
EmojiConverter emojiConverter = EmojiConverter.getInstance();
String html = emojiConverter.toHtml(keywords.getContent().trim());
// JFinal 的保存方式
Record record = new Record().set("content", html)
Db.save("keywords", record);
比如说,要存储的内容当中包含了一个点赞的 Emoji。
mysql库不能修改为utf8mb4编码,但又想存emoji表情怎么办?
那么通过 emojiConverter.toHtml() 转了之后的内容是什么样子呢?是一个码点:,debug 的时候截图如下所示。
mysql库不能修改为utf8mb4编码,但又想存emoji表情怎么办?
这样的话,MySql 保存的内容就是一个普通的字符串了,编码方式仍然可以是 utf8。
3)显示 Emoji 的时候调用 toUnicode() 方法格式化一下
String unicode = emojiConverter.toUnicode(content);
outMsg.setContent(unicode);
原文:https://juejin.im/post/5db696b76fb9a0203b234c22?utm_source=gold_browser_extension
Mysql保存emoji表情相关推荐
- mybatis mysql 微信昵称表情_springboot+mybatis+druid+mysql 保存emoji表情
最近在学习springboot,在练习做一个简单博客系统时遇到了保存emoji表情出错,搜索了半天才搞定.这里记录下来,希望能够帮助到自己或有需要的人不要踩坑. 第一步:首先你要保证你的mysql数据 ...
- mysql保存Emoji表情或微信文字、图文回复带Emoji等微信表情图标?
背景: 客户需要在自动回复的文字.图文表情上使用Emoji表情? 原因: Mysql表设计时,都是用UTF8字符集的,Mysql的utf8字符集是3字节的,而emoji是4字节,所以保存修改等操作会出 ...
- mysql保存emoji表情(比如微信开发用户昵称)
使用mysql数据库的时候,如果字符集是UTF-8并且在php服务器上,当存储emoji表情的时候,会抛出以上异常(比如微信开发获取用户昵称,有的用户的昵称用的是emoji的图像) 这是由于字符集不支 ...
- mysql存带表情的微信昵称_MySQL保存 emoji 表情(微信昵称表情)
问题分析 在微信开发过程中,总是会遇到带有emoji表情昵称的微信用户无法自动登录的问题. 后台代码抛出类似下面的异常信息. java.sql.SQLException: Incorrect stri ...
- php mysql emoji表情_php 让MySQL支持Emoji表情 mysql 5.5.3+
让MySQL支持Emoji表情 mysql 5.5.3+ 让mysql支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. mysql 版本 5.6 1 解决 ...
- mysql 5.6 emoji_让MySQL支持Emoji表情 mysql 5.6
让 1 解决方案:将Mysql的编码从utf8转换成utf8mb4. 需要 >= MySQL 5.5.3版本.从库也必须是5.5的了.低版本不支持这个字符集. 复制报错 2 my.cnf 文件 ...
- 让MySQL支持Emoji表情 mysql 5.6
让MySQL支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. mysql 版本 5.6 1 解决方案:将Mysql的编码从utf8转换成utf8mb4. ...
- php保存emoji表情,php保存emoji表情
最近一个朋友在调用微信接口的时候,获取到的数据保存到数据库失败了,原因是因为里面含有emoji表情,接下来吾爱编程为大家介绍一下关于php保存emoji表情的方法,有需要的小伙伴可以参考一下: 1.保 ...
- emoji表情mysql报错_让MySQL支持Emoji表情 mysql 5.6
让MySQL支持Emoji表情,涉及无线相关的 MySQL数据库建议都提前采用 utf8mb4 字符集. mysql 版本 5.6 1 解决方案:将Mysql的编码从utf8转换成utf8mb4. 需 ...
最新文章
- python接口自动化 一个变量 其他接口要用_python接口自动化测试之接口数据依赖的实现方法...
- 我说分布式事务之TCC
- 如何用java+tomcat来创建网站服务器
- hs_err_pid
- 一文带你了解隐马尔科夫模型
- iOS App 启动性能优化
- python--------进程与线程
- 剑桥offer(41~50)
- 硬件基础知识---(16)三极管放大电路
- 基于JAVA+SpringMVC+Mybatis+MYSQL的房屋租赁管理系统
- DevExpress 汉化(简单、实用、快速) 转
- Python文档学习笔记(1)--使用Python 解释器
- CentOS搭建git服务器实测
- 超简单的Matlab附加功能安装包的安装方法
- 网络蜘蛛的工作原理及操作
- Android Jetpack 之 DataStore 初探
- 揭开A股38位「 90后」董事长的神秘面纱
- php yar 安装失败_CentOS搭建Yar框架以及遇到的坑!
- 国际结算银行:嵌入式监管可大幅简化合规监管
- 东北农业大学考研计算机大纲,东北农业大学339农业知识综合一考研大纲