日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

java处理emoji表情

發布時間:2023/12/15 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 java处理emoji表情 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

emoji表情也是使用Unicode編碼的,但UTF8編碼是不支持的。我們如果想存儲emoji到數據庫,一般有兩種方法,以mysql為例,將數據庫編碼從 utf8 改為 utf8mb4,第二種就是做一個轉換,將emoji表情轉換成另一個字符,今天我們就測試一下第二種方法。

實現

我們需要使用第三方開源庫emoji-java,github地址

<dependency>
   <groupId>com.vdurmont</groupId>
   <artifactId>emoji-java</artifactId>
   <version>4.0.0</version>
</dependency>

上邊為maven地址,測試的3個emoji表情為

將表情轉換為別名

import com.vdurmont.emoji.EmojiParser;

public class Client {

  public static void main(String[] args) {
    System.out.println(EmojiParser.parseToAliases("uD83DuDE04"));
    System.out.println(EmojiParser.parseToAliases("uD83DuDE38"));
    System.out.println(EmojiParser.parseToAliases("uD83DuDE1F"));
  }

}

輸出結果為

:smile:
:smile_cat:
:worried:

這樣數據庫就可以存儲了

將別名轉換為表情

import com.vdurmont.emoji.EmojiParser;

public class Client2 {

  public static void main(String[] args) {
    System.out.println(EmojiParser.parseToUnicode(":smile:"));
    System.out.println(EmojiParser.parseToUnicode(":smile_cat:"));
    System.out.println(EmojiParser.parseToUnicode(":worried:"));
  }

}

輸出3個emoji表情,因為markdown文件中不能出現emoji表情,所以這里就不顯示了。

將表情轉換為HTML格式

import com.vdurmont.emoji.EmojiParser;

public class Client3 {

  public static void main(String[] args) {
    System.out.println(EmojiParser.parseToHtmlHexadecimal("uD83DuDE04"));
    System.out.println(EmojiParser.parseToHtmlHexadecimal("uD83DuDE38"));
    System.out.println(EmojiParser.parseToHtmlHexadecimal("uD83DuDE1F"));
  }

}

輸出為

😄
😸
😟

HTML中顯示如下

原理分析

內部維護了一個emoji表情和別名的映射表,使用前綴樹保存所有emoji的Unicode編碼。

public class EmojiTrie {
  private Node root = new Node();

  public EmojiTrie(Collection<Emoji> emojis) {
    for (Emoji emoji : emojis) {
      Node tree = root;
      for (char c: emoji.getUnicode().toCharArray()) {
        if (!tree.hasChild(c)) {
          tree.addChild(c);
        }
        tree = tree.getChild(c);
      }
      tree.setEmoji(emoji);
    }
  }
  
}

參考

使用輕量級工具emoji-java處理emoji表情字符
特殊字符(包括emoji)梳理和UTF8編碼解碼原理
emoji表情存儲到數據庫的方法

總結

以上是生活随笔為你收集整理的java处理emoji表情的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。