1

標準文字列を CP1250 に変換する必要があり、各文字に 1 バイトのみを使用します。たとえば、ポリッシュ char 'ł' は 2 バイトの Unicode ではなく 0xB3 に解析する必要があります。私がそのようなことをしようとしているとき:

byte[] array = "ała".getBytes();
s = new String(array, 0, array.length, Charset.forName("CP1250"));

次に、s.getBytes(); を実行している場合。文字よりも多くのバイトを返します。「ł」は Unicode のように 2 バイトです。すべての文字列を変換し、そこからバイトを正確に CP1250 コードに取得する必要があります: https://pl.wikipedia.org/wiki/Windows-1250#Tablica_kod.C3.B3w

4

2 に答える 2

1

文字列をバイトに変換する際に charset を指定して、このようにします。

    byte[] array = "ała".getBytes("CP1250");
于 2016-03-03T12:02:19.177 に答える
0

Javaのデフォルトの文字セットを使用してaをバイト配列に変換していますがString、それが何であれ(UTF-8である可能性があり、他のものである可能性があります。これは構成可能なオプションです)。そして、それらのバイトを に変換し直してStringいますが、バイトが CP1250 としてエンコードされていることをコンバーターに伝えていますが、そうではない可能性があります。そのため、破損しStringた . しかし、いずれにしても、Stringあなたが求めているものではない が返されます。

getBytes()バイトを CP1250 としてエンコードする必要があることを伝える必要があります。たとえば、次のようになります。

byte[] array = "ała".getBytes("CP1250");

または:

byte[] array = "ała".getBytes(Charset.forName("CP1250"));
于 2016-03-03T20:25:39.270 に答える