不知道从什么时候开始,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));
这样只要在入库出库的时候进行编码解码就可以了,老项目完美支持。
大体看了下这个框架处理表情还是挺全的,也可以进行 html 转码或者直接移除等操作,具体用法可以参考 README。