方案1.改数据库配置
使之支持emoji表情等特殊字符,小公司或者个人开发还好,大公司用此方案代价较大。
以mysql为例,改配置方法参考:https://blog.csdn.net/u010737354/article/details/52456668
方案2.使用unicode编码(推荐使用)
统一标准:入库或入缓存统一对特殊字符unicode编码,从库或缓存取出后统一进行unicode编码
(1)unicode加密:
//加密emoji表情
public static String encodeToUnicode(String string) {
StringBuffer unicode = new StringBuffer();
for (int i = 0; i < string.length(); i++) {
// 取出每一个字符
char c = string.charAt(i);
// 转换为unicode
unicode.append("\\u" + Integer.toHexString(c));
}
return unicode.toString();
}
(2)unicode解密:
//解密emoji表情
public static String decodeFromUnicode(String unicode) {
StringBuffer string = new StringBuffer();
String[] hex = unicode.split("\\\\u");
if(hex.length==1){
return unicode;
}
for (int i = 1; i < hex.length; i++) {
// 转换出每一个代码点
int data = Integer.parseInt(hex[i], 16);
// 追加成string
string.append((char) data);
}
return string.toString();
}