1,从前端传过来的参数是"\u9676\u9676\u6D4B\u8BD5\u8D26\u53F701"这样的unicode编码,需要将其转换为中文字符串,发现java.util.Properties类中有一个loadConvert函数可以完成这件事,直接copy过来使用。

 

  1. public static String loadConvert(char[] inint offint len, char[] convtBuf) {   
  2.         if (convtBuf.length < len) {   
  3.             int newLen = len * 2;   
  4.             if (newLen < 0) {   
  5.                 newLen = Integer.MAX_VALUE;   
  6.             }   
  7.             convtBuf = new char[newLen];   
  8.         }   
  9.         char aChar;   
  10.         char[] out = convtBuf;   
  11.         int outLen = 0;   
  12.         int end = off + len;   
  13.    
  14.         while (off < end) {   
  15.             aChar = in[off++];   
  16.             if (aChar == '\\') {   
  17.                 aChar = in[off++];   
  18.                 if (aChar == 'u') {   
  19.                     // Read the xxxx   
  20.                     int value = 0;   
  21.                     for (int i = 0; i < 4; i++) {   
  22.                         aChar = in[off++];   
  23.                         switch (aChar) {   
  24.                         case '0':   
  25.                         case '1':   
  26.                         case '2':   
  27.                         case '3':   
  28.                         case '4':   
  29.                         case '5':   
  30.                         case '6':   
  31.                         case '7':   
  32.                         case '8':   
  33.                         case '9':   
  34.                             value = (value << 4) + aChar - '0';   
  35.                             break;   
  36.                         case 'a':   
  37.                         case 'b':   
  38.                         case 'c':   
  39.                         case 'd':   
  40.                         case 'e':   
  41.                         case 'f':   
  42.                             value = (value << 4) + 10 + aChar - 'a';   
  43.                             break;   
  44.                         case 'A':   
  45.                         case 'B':   
  46.                         case 'C':   
  47.                         case 'D':   
  48.                         case 'E':   
  49.                         case 'F':   
  50.                             value = (value << 4) + 10 + aChar - 'A';   
  51.                             break;   
  52.                         default:   
  53.                             throw new IllegalArgumentException(   
  54.                                     "Malformed \\uxxxx encoding.");   
  55.                         }   
  56.                     }   
  57.                     out[outLen++] = (char) value;   
  58.                 } else {   
  59.                     if (aChar == 't')   
  60.                         aChar = '\t';   
  61.                     else if (aChar == 'r')   
  62.                         aChar = '\r';   
  63.                     else if (aChar == 'n')   
  64.                         aChar = '\n';   
  65.                     else if (aChar == 'f')   
  66.                         aChar = '\f';   
  67.                     out[outLen++] = aChar;   
  68.                 }   
  69.             } else {   
  70.                 out[outLen++] = (char) aChar;   
  71.             }   
  72.         }   
  73.         return new String(out, 0, outLen);