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