java 中手写可识别的 unicode 编码 ( "\u0000\u1111" )

来源:互联网 发布:淘宝还有机会吗 编辑:程序博客网 时间:2024/05/18 10:53

在 java 中有时我们需要自己拼一小块 unicode 字符串, 但是我们直接写 “\u0000\u1111” 这样的话是可以识别的, 但是 “\u” + “0000” + “\u” + “1111” 的方式会识别不出来, 这时就需要我们再进行一步转化:

    /**     * 把手拼的unicode字符串(\u0000\u1111)转化为可被识别的字符     */    public static String unicodeStringDecode(String unicodeStr) {        if (unicodeStr == null) {            return null;        }        StringBuilder retBuf = new StringBuilder();        int maxLoop = unicodeStr.length();        for (int i = 0; i < maxLoop; i++) {            if (unicodeStr.charAt(i) == '\\') {                if ((i < maxLoop - 5) &&                     ((unicodeStr.charAt(i + 1) == 'u') || (unicodeStr.charAt(i + 1) == 'U')))                    try {                        // 关键一句, 转化为16进制, 再转化为char                        retBuf.append((char) Integer.parseInt(unicodeStr.substring(i + 2, i + 6), 16));                         i += 5;                    } catch (NumberFormatException localNumberFormatException) {                        retBuf.append(unicodeStr.charAt(i));                    }                else                    retBuf.append(unicodeStr.charAt(i));            } else {                retBuf.append(unicodeStr.charAt(i));            }        }        return retBuf.toString();    }