Emoji表情后台处理

之前写android的,后来公司直接让我接手java后台,开始还担心完不成工期任务,硬着头皮直接上。。。。后来发现也就那样,爱情不变人在换。。。

记录下工作中遇到的小麻烦,首先就是用户登录或者创建昵称之类,用户会使用各式各样的表情,看着好看,给后台会造成各种乱码。开始也是查,网上大部分都是讲解设置数据库/表/列的编码为utf8mb4。看来遇到这类问题的不少,就按照这个设置了,并写了bloglmysql 插入数据时,出现”\xF0\x9F\x8F\x80”这种情况的处理! 后来发现还是有问题,这尼玛不是坑么。

公司先做的app是H5版的,所以入口是通过微信进去的,设置昵称为表情的时候,只有少部分表情在Android手机上是支持的,大部分在不同手机上显示不一样的效果,有?,有繁体字的乱码之类的。。。但是在iPhone手机上是没有问题的。原来Iphone使用的浏览器内核是支持utf16的,google在Android 6.0之后的chrome 内核上也支持了,但是微信使用的是自己改编的盗版chrome内核。兼容性不好,微信自己也对特殊表情做了限制,不再是随心所欲的设置昵称了。

废话这么多,下面来说说我的解决之法:
我在男性交友网站上找到了emoji-java 的库。这个库有自己的一张映射表,将表情和字符串做了关联,支持不少,但是更新太慢了,现在Emoji表情应该在2300+,他仅支持1000左右,最近更新在7个月前,这个注意了
这个库的有点是:使用起来非常方便。
java导入
Maven:


  com.vdurmont
  emoji-java
  3.2.0

或者 Gradle导入

compile 'com.vdurmont:emoji-java:3.2.0'

之后直接调用就行了
将表情转码

    String str = "An 【表情1】awesome【表情2】string 【表情3】with a few 【表情4】emojis!";
String result = EmojiParser.parseToAliases(str);
System.out.println(result);
// Prints:
// "An :grinning:awesome :smiley:string with a few :wink:emojis!"

将转码后的数据解码为带表情的字符串

    String str = "An :grinning:awesome :smiley:string 😄with a few :wink:emojis!";
String result = EmojiParser.parseToUnicode(str);
System.out.println(result);
// Prints:
// "An 【表情1】awesome【表情2】string 【表情3】with a few 【表情4】emojis!"

表情是乱码,所以直接上文字了。
还有其他方法,大家可以看原文章,就不赘述了。
这个库的缺点就是,表情很少,更新慢,有时间将映射表完善上传上去。但是优点就是方便仅仅后台转码解码就解决问题了。
有的不满足于此。可以看看另一个文章EmojiCss 这个方法需要前端后台配合使用。相对来说更新快,表情全。

你可能感兴趣的:(服务端)