发布网友 发布时间:2022-04-19 22:52
共3个回答
热心网友 时间:2023-09-05 14:34
主要不知道你这个到底是用什么编的码,如果知道的话,比如这里\u6DF7 前面\u是标志6DF7是两位编码,这里假设是GBK编码可以这样
byte [] x = new byte[2];
x[0] =0x6d;
x[1] =0xf7;
String msg = new String(x,"GBK");
System.out.println(msg);
这样一个字就出来了,程序段没有编译过,意思就是手动将字符编码写到byte数组里去,用new String()方法就可以将字符串转换为对应编码,我以前也这么干过,希望对你有帮助。
热心网友 时间:2023-09-05 14:35
JDK bin目录下有个native2ascii.exe
热心网友 时间:2023-09-05 14:35
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') {
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 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();
}
试下这个方法