Java変換emojiなどの特殊記号



 
データベースのエンコーディングフォーマットはutf 8 mb 4です。
Emoji処理方式
ここではorg.apaache.com mmons.lang 3.StringEscape Utilsツール類を使用して、簡単ななどの2つのコードを使って、特殊な記号とemoji表情の意味変換メモリを実現し、読み取りと反転します。
転送メモリ
  • StringEscape Utils.escapeXXX
  • いくつかのトランスコード方式があります。個人のフォーマットによって選択できます。
  • pblic static final String escapeCsv(final) String input)
  • pblic static final String escapeEcmaScript(final) String input)
  • pblic static final String escapeHtml 3(final) String input)
  • pblic static final String escapeHtml 4(final) String input)
  • pblic static final String escapeJava(final) String input)
  • pblic static final String escapeJson(final) String input)
  • pblic static final String escapeXml(final) String input)
  • pblic static String escapeXml 10 String input)
  • pblic static String escapeXml 11(final) String input)
  • 逆転の意味を読み取る
    読み取り後、個人のフォーマットによってリバースを行います。emoji値を元に戻して、フロントエンドに展示します。
  • pblic static final String unescapeCsv(final) String input) ;
  • pblic static final String unescapeEcmaScript(final) String input)
  • pblic static final String unescapeHtml 3(final) String input)
  • pblic static final String unescapeHtml 4(final) String input)
  • pblic static final String unescapeJava(final) String input)
  • pblic static final String unescapeJson(final) String input)
  • pblic static final String unescapeXml(final) String input)
  •  
    手で打つ複雑なコードを追加します。
    package utils;
    
    import java.io.UnsupportedEncodingException;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import org.apache.commons.lang.StringUtils;
    
    public class EmojiUtils {
        /**
         * emoji    
         *
         * @param source     
         * 
         * @param slipStr emoji         
         * 
         * @return        
         */
        public static String filterEmoji(String source, String slipStr) {
            if (StringUtils.isNotBlank(source)) {
                return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", slipStr);
            } else {
                return source;
            }
        }
    
        /**
         * @Description       emoji        utf-8            (   4   ,  utf8mb4   )
         * @param str
         *                  
         * @return       
         * @throws UnsupportedEncodingException
         *             exception
         */
        public static String emojiConvert(String str) throws UnsupportedEncodingException {
            String patternString = "([\\x{10000}-\\x{10ffff}\ud800-\udfff])";
    
            Pattern pattern = Pattern.compile(patternString);
            Matcher matcher = pattern.matcher(str);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                try {
                    matcher.appendReplacement(sb, "[[" + URLEncoder.encode(matcher.group(1), "UTF-8") + "]]");
                } catch (UnsupportedEncodingException e) {
                    throw e;
                }
            }
            matcher.appendTail(sb);
            return sb.toString();
        }
    
        /**
         * @Description   utf8           emoji      
         * @param str
         *                   
         * @return        
         * @throws UnsupportedEncodingException
         *             exception
         */
        public static String emojiRecovery2(String str) throws UnsupportedEncodingException {
            String patternString = "\\[\\[(.*?)\\]\\]";
    
            Pattern pattern = Pattern.compile(patternString);
            Matcher matcher = pattern.matcher(str);
    
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                try {
                    matcher.appendReplacement(sb, URLDecoder.decode(matcher.group(1), "UTF-8"));
                } catch (UnsupportedEncodingException e) {
                    throw e;
                }
            }
            matcher.appendTail(sb);
            return sb.toString();
        }
    }