当Emoji表情字符存储有问题,或者遇到保存字符串到数据库里出现\xF0\x9F\x92\x94类似问题时,请尝试使用这个工具。
什么工具呢?
Java Emoji Converter 。
GitHub地址为:https://github.com/binarywang/java-emoji-converter
可以将Emoji表情(
)转义成沉默王二😊这样的。
那,该怎么使用这款工具呢?
首先,在pom.xml文件中引入jar包:
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>java-emoji-converter</artifactId>
<version>0.1.1</version>
</dependency>
然后,在Java类中声明一个EmojiConverter,如下:
private EmojiConverter emojiConverter = EmojiConverter.getInstance();
使用方法也非常简单,如下:
String str = " An ??awesome ??string with a few ??emojis!";
String alias = this.emojiConverter.toAlias(str);
String html = this.emojiConverter.toHtml(str);
toAlias将Emoji转义为关键字,类似:xiao:。
toHtml将Emoji转义为unicode,类似🙆。
可以直接将toHtml转换后的字符串保存到数据库,显示的时候,就直接显示,不需要再转义,HTML是支持的。整体代码实例如下:
package com.comwer; import com.github.binarywang.java.emoji.EmojiConverter; import junit.framework.Assert; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Unit test for simple App. */ public class AppTest extends TestCase { private EmojiConverter emojiConverter = EmojiConverter.getInstance(); /** * Create the test case * * @param testName * name of the test case */ public AppTest(String testName) { super(testName); } /** * @return the suite of tests being tested */ public static Test suite() { return new TestSuite(AppTest.class); } /** * Rigourous Test :-) */ public void testApp() { String str = " An ??awesome ??string with a few ??emojis!"; String alias = this.emojiConverter.toAlias(str); String html = this.emojiConverter.toHtml(str); System.out.println(str); System.out.println(html); System.out.println("EmojiConverterTest.testToAlias()=====>"); System.out.println(alias); Assert.assertEquals( ":no_good: :ok_woman: :couple_with_heart:An :smiley::grinning:awesome :smiley::smiley:string with a few :smiley::wink:emojis!", alias); assertTrue(true); } }