java反国际化实例源码



java反国际化实例源码。

Java代码 复制代码 收藏代码
  1. public static String fromEncodedUnicode(char[] in, int off, int len) {   
  2.     char aChar;   
  3.     char[] out = new char[len]; // 只短不长   
  4.     int outLen = 0;   
  5.     int end = off + len;   
  6.     while (off < end) {   
  7.         aChar = in[off++];   
  8.         if (aChar == ’\\’) {   
  9.             aChar = in[off++];   
  10.             if (aChar == ’u') {   
  11.                 // Read the xxxx   
  12.                 int value = 0;   
  13.                 for (int i = 0; i < 4; i++) {   
  14.                     aChar = in[off++];   
  15.                     switch (aChar) {   
  16.                         case ’0′:   
  17.                         case ’1′:   
  18.                         case ’2′:   
  19.                         case ’3′:   
  20.                         case ’4′:   
  21.                         case ’5′:   
  22.                         case ’6′:   
  23.                         case ’7′:   
  24.                         case ’8′:   
  25.                         case ’9′:   
  26.                             value = (value << 4) + aChar - ’0′;   
  27.                             break;   
  28.                         case ’a':   
  29.                         case ’b':   
  30.                         case ’c':   
  31.                         case ’d':   
  32.                         case ’e':   
  33.                         case ’f':   
  34.                             value = (value << 4) + 10 + aChar - ’a';   
  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.                         default:   
  45.                             throw new IllegalArgumentException(   
  46.                                     ”Malformed \\uxxxx encoding.”);   
  47.                     }   
  48.                 }   
  49.                 out[outLen++] = (char) value;   
  50.             } else {   
  51.                 if (aChar == ’t') {   
  52.                     aChar = ’\t’;   
  53.                 } else if (aChar == ’r') {   
  54.                     aChar = ’\r’;   
  55.                 } else if (aChar == ’n') {   
  56.                     aChar = ’\n’;   
  57.                 } else if (aChar == ’f') {   
  58.                     aChar = ’\f’;   
  59.                 }   
  60.                 out[outLen++] = aChar;   
  61.             }   
  62.         } else {   
  63.             out[outLen++] = (char) aChar;   
  64.         }   
  65.     }   
  66.     return new String(out, 0, outLen);   
  67. }  
    public static String fromEncodedUnicode(char[] in, int off, int len) {
        char aChar;
        char[] out = new char[len]; // 只短不长
        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);
    }
Java代码 复制代码 收藏代码
  1. public static void main(String[] args) {   
  2.     String str = ”\”reason\”:\”570188\\u4eba\\u5728\\u8bfb\”";   
  3.     System.out.println(“str=” + str);   
  4.     String result = fromEncodedUnicode(str.toCharArray(), 0, str.length());   
  5.     System.out.println(result);   
  6. }  
    public static void main(String[] args) {
        String str = "\"reason\":\"570188\\u4eba\\u5728\\u8bfb\"";
        System.out.println("str=" + str);
        String result = fromEncodedUnicode(str.toCharArray(), 0, str.length());
        System.out.println(result);
    }

  • 大小: 13.2 KB