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

在 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();
    }

猜你喜欢

转载自blog.csdn.net/j550341130/article/details/76422232
今日推荐