public class Native2AsciiUtils {
/**
* prefix of ascii string of native character
*/
private static String PREFIX
= "\\u";
/**
* Native to ascii string. It's same as execut native2ascii.exe.
* @param str native string
* @return ascii string
*/
char[] chars = str.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < chars.length; i++) {
sb.append(char2Ascii(chars[i]));
}
return sb.toString();
}
/**
* Native character to ascii string.
* @param c native character
* @return ascii string
*/
private static String char2Ascii
(char c
) {
if (c > 255) {
StringBuilder sb = new StringBuilder();
sb.append(PREFIX);
int code = (c >> 8);
if (tmp.length() == 1) {
sb.append("0");
}
sb.append(tmp);
code = (c & 0xFF);
if (tmp.length() == 1) {
sb.append("0");
}
sb.append(tmp);
return sb.toString();
} else {
}
}
/**
* Ascii to native string. It's same as execut native2ascii.exe -reverse.
* @param str ascii string
* @return native string
*/
StringBuilder sb = new StringBuilder();
int begin = 0;
int index = str.indexOf(PREFIX);
while (index != -1) {
sb.append(str.substring(begin, index));
sb.append(ascii2Char(str.substring(index, index + 6)));
begin = index + 6;
index = str.indexOf(PREFIX, begin);
}
sb.append(str.substring(begin));
return sb.toString();
}
/**
* Ascii to native character.
* @param str ascii string
* @return native character
*/
private static char ascii2Char
(String str
) {
if (str.length() != 6) {
"Ascii string of a native character must be 6 character.");
}
if (!PREFIX.equals(str.substring(0, 2))) {
"Ascii string of a native character must start with \"\\u\".");
}
String tmp
= str.
substring(2,
4);
int code
= Integer.
parseInt(tmp,
16) << 8;
tmp = str.substring(4, 6);
return (char) code;
}
}
//源代码片段来自云代码http://yuncode.net