前言
好久没更新了, 最近事比较多, 或许下个月就会恢复到正常的发文频次.
这篇文章得从一个 emoji 表情开始, 我之前开源的一个 IM 项目中有朋友提到希望可以支持 emoji 表情传输.
https://github.com/crossoverJie/cim/issues/12
正好那段时间有空, 加上这功能看着也比较简单准备把它实现了.
但在真正实现时却发现没那么简单.
我首先尝试将一个 emoji 表情存入数据库看看:
果不其然的出错了, 导致这个异常的原因是目前数据库所支持的编码中并不能存放 emoji, 那 emoji 表情到底是个什么东西呢.
本质上来说计算机所存储的信息都是二进制 01,emoji 也不例外, 只要存储和读取 (编解码) 的方式一致那就可以准确的展示这个信息.
更多编解码的内容后文再介绍, 这里先想想如何快速解决问题.
存储 emoji
虽说想要在 MySQL 中存储 emoji 的方式也有好几种, 比如可以升级存储字符集到可以存放 emoji , 但这种需要 MySQL 的版本支持.
所以更保险的方式还是在应用层解决, 比如我们是否可以将 emoji 当做字符串存储, 只是显示的时候要格式化为一个 emoji 表情, 这样对于所有的数据库版本都可兼容.
于是我们这里的需求是一个 emoji 表情转换为字符串, 同时还得将这个字符串转换为 emoji.
为此我在 GitHub 上找到了一个库, 它可以方便的将一个 emoji 转换为字符串的别名, 同时也支持将这个别名转换为 emoji.
- https://github.com/vdurmont/emoji-java
- @Test
- public void emoji() throws Exception{
- String str = "An :grinning:awesome :smiley:string
来源: https://www.cnblogs.com/crossoverJie/p/11495319.html