Java String UNICODE '\u2002' 导致的乱码问题
问题出现在 友盟分享 后PC端的QQ显示 '口口口' 的乱码,思路是把字符串中导致乱码的字符 '\u2002' 转成不会乱码的字符 '\u0020' , :
方式一(推荐)
yourStr.replace('\u2002', '\u0020');
方式二
/**
* 遍历去掉 '\u2002' 形式的空格...不推荐
* <pre>
* 1.不间断空格\u00A0,主要用在office中,让一个单词在结尾处不会换行显示,快捷键 ctrl+shift+space ;
* 2.半角空格(英文符号)\u0020,代码中常用的;
* 3.全角空格(中文符号)\u3000,中文文章中使用;
* </pre>
*/
private static synchronized String removeUnicodeSpace(String string) {
if (TextUtils.isEmpty(string)) {
return "";
}
final StringBuilder sb = new StringBuilder();
for (int i = 0; i < string.length(); i++) {
// 取出每一个字符
char c = string.charAt(i);
if (c == '\u2002') { //|| c == '\u3000' || c == '\u00A0' || c == '\u0020'
c = '\u0020';
}
sb.append(c);
}
return sb.toString();
}
方式三(推荐)
commons-lang3 从 3.6 版本把文本处理的工具类单独抽到了 commons-text 库中
乱码的HTML
<p> 本报记者 王丽新</p><p> 4月14日,青岛市房管局官方网站
使用 org.apache.commons.text.StringEscapeUtils 处理:
StringEscapeUtils.escapeHtml4(shareText);

浙公网安备 33010602011771号