您的位置:首页 > 其它

字符集编码Unicode到native

2016-03-18 11:09 429 查看
public static String ascii2native(String sAscii) {
StringBuilder sb = new StringBuilder();
String[] words = sAscii.split("\\\\u");
sb.append(words[0]);
for (int i = 1; i < words.length; i++) {
String word = words[i];
sb.append((char) Integer.parseInt(word.substring(0, 4), 16)+"");
if (word.length() > 4) {
sb.append(word.substring(4));
}
}
return sb.toString();
}


public static String native2ascii(String sNative) {
if (TextUtils.isEmpty(sNative))
return "";
char[] chars = sNative.toCharArray();
StringBuilder sb = new StringBuilder();
for (char c : chars) {
if (c > 127) {
sb.append("\\u");
sb.append(Integer.toHexString(c));
} else {
sb.append(c);
}
}
return sb.toString();
}


public static String decodeUnicode(String theString) {
char aChar;
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len);
for (int x = 0; x < len;) {
aChar = theString.charAt(x++);
if (aChar == '\\') {
aChar = theString.charAt(x++);
if (aChar == 'u') {
// Read the xxxx
int value = 0;
for (int i = 0; i < 4; i++) {
aChar = theString.charAt(x++);
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.");
}
}
outBuffer.append((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';
outBuffer.append(aChar+"");
}
} else
outBuffer.append(aChar+"");
}
return outBuffer.toString();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unicode 编码