Итак, у меня есть массив char [], содержащий текст и другие данные.
Как извлечь китайский текст из массива char []?Прямо сейчас я могу получить английский отлично с
public String getString(int index, int length) {
String str = "";
for (int i = 0; i < length && this.data[index + i] != 0; i++)
str = str + this.data[index + i];
return str;
}
, тогда я пытаюсь это:
try {
String charset = "GB18030";
String str = new String(m.target.getBytes("UTF-16"), "GB18030");
System.out.println(str);
System.out.println(str.equals("大家"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
m.target - это строка, которую я получил из массива byte [] сgetString () выше.Я пробовал различные кодировки и их комбинации, и ни одна из них не будет отображать текст правильно (大家), и ни одна из них не вернет true для str.equals ("大家")
РЕДАКТИРОВАТЬ
Используя этот метод, я могу успешно получить китайские иероглифы.
public String test(int index, int length) {
byte[] t = new byte[this.data.length];
for (int i = 0; i < this.data.length; i++)
t[i] = (byte) this.data[i];
try {
return new String(t, index, length, "GB18030");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
Но мой вопрос сейчас таков: я думал, что максимальный байт мог быть 127?Как байтовый массив может содержать старшие байты китайских символов?Могу ли я безопасно сменить буфер на byte [] вместо char []?