java反国际化实例源码。
- 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);
- }
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);
}
- 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);
- }
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);
}

