所以,我有一個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()以上。我已經試過各種編碼以及它們的組合,其中沒有將正確的(大家)顯示的文本,並沒有將用於str.equals返回true(「大家」)
編輯
使用這種方法我可以成功地獲得漢字。
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?字節數組如何保存高字節漢字?我可以安全地將緩衝區更改爲字節[]而不是char []?
的幫助你爲什麼要同時使用' 「UTF-16」'和' 「GB18030」'?爲什麼不這樣做:'new String(this.data,offset,length,「UTF-16」)'? – 2012-01-15 20:39:19
我錯誤說我是使用用於一個this.data byte []數組。它實際上是一個字符數組。如果它是一個字節[]數組不會無法保存unicode文本?由於一個字節可以容納的最大值是127? – marcaddeo 2012-01-15 20:45:51
'char []'將包含UTF-16代碼單元的文本。一個'byte []'可以包含任何編碼中的文本,因爲文本編碼只不過是一種將字符編號映射爲字節的方式。 – Joey 2012-01-15 20:59:39