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>    414日,青岛市房管局官方网站

使用 org.apache.commons.text.StringEscapeUtils 处理:

StringEscapeUtils.escapeHtml4(shareText);
posted @ 2020-04-15 16:28  javakam  阅读(0)  评论(0)    收藏  举报  来源