分类: Java工具开发

改造 Java+MySQL 项目支持 Emoji

文章目录[隐藏]

不知道从什么时候开始,Emoji 被越来越广泛的应用到了生活中,支持表情的 APP 里用,不支持表情的创造表情也要用,所以对于某些老项目就有问题了。

MySQL 默认的 UTF8 格式是不支持表情存储的,但是从版本 5.5 开始支持的 UTF8MB4 可以存储。所以如果已经是新版 MySQL 那么执行一条 SQL 改一下存储编码就直接解决了,算是最快捷的解决方案了。

当数据库这条路走不通的时候就只能通过代码折中了,在存库前将 emoji 编码,读取时将 emoji 还原。最简单的将整条数据进行 Base64 或者 URL 编码,但这样会极大增加存储长度。

所以更合理的是将 emoji 表情找出来,只对表情编码。于是 GitHub 上一搜,就找到了项目 Emoji-Java

一个最简单的示例:

String raw = "Come on emoji: ☺ !";
// 打印 Come on emoji: :relaxed: !
System.out.println(EmojiParser.parseToAliases(raw));

String encode = "Come on emoji: :relaxed: !";
// 打印 Come on emoji: ☺ !
System.out.println(EmojiParser.parseToUnicode(encode)); 

这样只要在入库出库的时候进行编码解码就可以了,老项目完美支持。

Done !

大体看了下这个框架处理表情还是挺全的,也可以进行 html 转码或者直接移除等操作,具体用法可以参考 README

Recent Posts

Docker 容器非 root 用户监听 80 端口

起因是基于 CentOS 的 …

2 年 之前

基于 Docker 定时打印文件

先说背景,喷墨打印机有个很大的…

3 年 之前

Java 运行时反射获取来自继承的泛型

背景 正常情况下 Java 的…

3 年 之前

Java 基于 ByteBuddy 重写系统当前时间

背景 一般单元测试时总会有些代…

3 年 之前

华硕 B450F-Gaming 主板 I211-AT 网卡驱动安装

事情起因是买了块华硕的 ROG…

3 年 之前

PHP 安装 Memcached 扩展

登录服务器挨步执行: # su…

4 年 之前