Java変換emojiなどの特殊記号
データベースのエンコーディングフォーマットはutf 8 mb 4です。
Emoji処理方式
ここではorg.apaache.com mmons.lang 3.StringEscape Utilsツール類を使用して、簡単ななどの2つのコードを使って、特殊な記号とemoji表情の意味変換メモリを実現し、読み取りと反転します。
転送メモリ
読み取り後、個人のフォーマットによってリバースを行います。emoji値を元に戻して、フロントエンドに展示します。
手で打つ複雑なコードを追加します。
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();
}
}