1,从前端传过来的参数是"\u9676\u9676\u6D4B\u8BD5\u8D26\u53F701"这样的unicode编码,需要将其转换为中文字符串,发现java.util.Properties类中有一个loadConvert函数可以完成这件事,直接copy过来使用。
- public static String loadConvert(char[] in, int off, int len, char[] convtBuf) {
- if (convtBuf.length < len) {
- int newLen = len * 2;
- if (newLen < 0) {
- newLen = Integer.MAX_VALUE;
- }
- convtBuf = new char[newLen];
- }
- char aChar;
- char[] out = convtBuf;
- int outLen = 0;
- int end = off + len;
- while (off < end) {
- aChar = in[off++];
- if (aChar == '\\') {
- aChar = in[off++];
- if (aChar == 'u') {
- // Read the xxxx
- int value = 0;
- for (int i = 0; i < 4; i++) {
- aChar = in[off++];
- switch (aChar) {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- value = (value << 4) + aChar - '0';
- break;
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- value = (value << 4) + 10 + aChar - 'a';
- break;
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'E':
- case 'F':
- value = (value << 4) + 10 + aChar - 'A';
- break;
- default:
- throw new IllegalArgumentException(
- "Malformed \\uxxxx encoding.");
- }
- }
- out[outLen++] = (char) value;
- } else {
- if (aChar == 't')
- aChar = '\t';
- else if (aChar == 'r')
- aChar = '\r';
- else if (aChar == 'n')
- aChar = '\n';
- else if (aChar == 'f')
- aChar = '\f';
- out[outLen++] = aChar;
- }
- } else {
- out[outLen++] = (char) aChar;
- }
- }
- return new String(out, 0, outLen);