2
私は、javaJavaの文字セットのデコード問題
にGB2312に含まれているこの文字を文字セットGB2312を使用して文字·
を解読しようとしている、位置コードがa1a4
check here
コードです:
public static void main(String[] _args) throws Exception {
String str="a1a4:· a5f6:ヶ a8c5:ㄅ";
ByteBuffer bf=readToByteBuffer(new ByteArrayInputStream(str.getBytes()));
System.out.println(Charset.forName("GB2312").decode(bf).toString());
}
private static final int bufferSize = 0x20000;
static ByteBuffer readToByteBuffer(InputStream inStream) throws IOException {
byte[] buffer = new byte[bufferSize];
ByteArrayOutputStream outStream = new ByteArrayOutputStream(bufferSize);
int read;
while (true) {
read = inStream.read(buffer);
if (read == -1)
break;
outStream.write(buffer, 0, read);
}
ByteBuffer byteData = ByteBuffer.wrap(outStream.toByteArray());
return byteData;
}
上記のコードは、出力結果:
a1a4:? a5f6:ヶ a8c5:ㄅ
a1a4
をデコードすることができない理由を私は理解していませんか?
'IO.string2InputStream(d)'もGB2312文字セットを使って書き込みを行うと仮定します。バッファのバイトが正しいかどうかチェックしましたか? –
@RussellZahniserごめんなさい、私の質問を編集しました。 – Koerr
あなたはおそらく 'str.getBytes(" GB2312 ")'を実行したいと思います。デフォルトを使用しています。おそらくUTF8です。しかし、私はsehが文字エンコードではなく文字の問題であることは間違いないと思います。 –