Javaでapp伝のemoji表情を解決する様々な方法

14791 ワード

今日のプロジェクトで遭遇した質問ですが、APPの注文コメントをemojiの表情を提出するとエラーになります.emojiの表情コメントを実現する機能が必要なので、自分で実現する方法とクエリーの実現方法によって、いくつかまとめてみます
mysqlのutf 8符号化の1文字は最大3バイトであるが、1つのemoji表情は4バイトであるため、utf 8はemoji表情の格納をサポートしない.
実現方式一
APPからバックエンドに転送されるデータには文字列とemoji表情が含まれており、emoji表情とStringをBase 64変換してデータベースに格納し、取り出すときに変換して上記の問題を解決するのが最も速く、最も簡単な解決方法です.
1、適用シーンに最適:
h 5やandroidの開発では、携帯電話の入力方式でEmojiの表情文字を入力すると、データベースがサポートされていないため、保存するとこれらの表情記号がフィルタリングされて表示されなくなり、androidやh 5の開発ではBase 64アルゴリズムを使用してこの問題を解決することができます.
2、使用ツール:
Apache commons codecクラスBase 64の使用
3、jarパッケージを導入する:
jarパッケージ依存性の追加(mavenプロジェクトであればpomファイルに直接下の内容を追加し、そうでなければ対応するjarパッケージを追加)
<dependency>
    <groupId>commons-codecgroupId>
    <artifactId>commons-codecartifactId>
    <version>1.6version>
dependency>

4、暗号解読の実現:

   
   
   
   
  1. import org.apache.commons.codec.binary.Base64;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import java.io.UnsupportedEncodingException;
  5. /**
  6. * String base64 , utf-8
  7. */
  8. public class Base64Util {
  9. private static final Logger logger = LoggerFactory.getLogger(Base64Util.class);
  10. /**
  11. * base64
  12. */
  13. public static String encodeData(String inputData) {
  14. try {
  15. if ( null == inputData) {
  16. return null;
  17. }
  18. return new String(Base64.encodeBase64(inputData.getBytes( "utf-8")), "utf-8");
  19. } catch (UnsupportedEncodingException e) {
  20. logger.error(inputData, e);
  21. }
  22. return null;
  23. }
  24. /**
  25. * base64
  26. */
  27. public static String decodeData(String inputData) {
  28. try {
  29. if ( null == inputData) {
  30. return null;
  31. }
  32. return new String(Base64.decodeBase64(inputData.getBytes( "utf-8")), "utf-8");
  33. } catch (UnsupportedEncodingException e) {
  34. logger.error(inputData, e);
  35. }
  36. return null;
  37. }
  38. }


mysql utf8 utf8mb4 4 , emoji 。 mysql utf8mb4

, ,

emoji-Java 4