在之前的一篇博文中,我写了之前自己遇到的一个emoji表情显示问题,后来通过转码的方式解决了。不过后来我觉得,自己对这个问题的研究不够深入,于是专门写了这篇文章来记录。
1、mysql数据库可以直接存储emoji,查询展示均不需要进行转码等额外处理;
2、Java中有时候需要对emoji进行编码和解码,可以使用到Java Emoji Converter
pom文件中添加依赖
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>java-emoji-converter</artifactId>
<version>0.1.1</version>
</dependency>
3、将unicode编码转换为emoji
/**
* 将emojiStr转为带有表情的字符
* @return
*/
@Test
public void emojiConverter2Unicode() {
String emojiStr = "🙏🙂";
EmojiConverter emojiConverter = EmojiConverter.getInstance();
String result = null;
if (null != emojiStr && emojiStr.length() > 0) {
result = emojiConverter.toUnicode(emojiStr);
}
System.out.println(result);
}
执行结果为“🙏🙂”,一个祈祷,一张笑脸。
4、将emoji转义为描述文字
/**
* 带有表情的字符串Emoji转义为关键字,类似:xiao:。
*
* @return
*/
@Test
public void emojiConverter2Alias() {
String str = "\uD83D\uDE4F\uD83D\uDE42";
EmojiConverter emojiConverter = EmojiConverter.getInstance();
String result = null;
if (null != str && str.length() > 0) {
result = emojiConverter.toAlias(str);
}
System.out.println(result);
}
执行结果为“:pray::slightly_smiling:”,祈祷和微笑。
5、emoji转码成unicode
/**
* 带有表情的字符串Emoji转义为unicode,类似🙆。
* @return
*/
@Test
public void emojiConverter2Html() {
String emoji = "\uD83D\uDE4F\uD83D\uDE42";
EmojiConverter emojiConverter = EmojiConverter.getInstance();
String result = null;
if (null != emoji && emoji.length() > 0) {
result = emojiConverter.toHtml(emoji);
}
System.out.println(result);
}
执行结果为“🙏🙂”。
可以发现,toHtml和toUnicode方法的处理方式刚好相反。