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