byte []からStringを作成する際に奇妙な動作に直面しています。 私はいくつかのファイルの内容を読むことでいっぱいになったバイト配列を持っています。バイト配列の特定の内容は次のとおりです。byte []から文字列を作成するときにいくつかのバイトが変更されました
ここでバイトの内容を[]の位置1533で-99(9D)である
今私は、このバイトから新しい文字列を作成します[]
String contents = new String(buffer, 0, bufLen);
しかし、今、私の場合、再び次のコードを使用してバイト[]に変換してください。
byte[] newBuffer= contents.getBytes();
なぜこのようなことが起こったのか分かりません。これを避けるために、私は何をしなければならないのでしょうか?
よろしく、
Anuj
エンコードされた文字セットと、それを読み取っている文字セットは何ですか? –
同様の質問[ここ](http://stackoverflow.com/q/37202020/5221149)がありました。任意の 'byte []'を 'String'に変換することはできません。すべてのバイトが有効な文字ではなく、拒否されます( '? '、別名10進数63に変換されます)。 Stringでバイトを送信するには、HexまたはBase64エンコーディングを使用します。 Hexはサイズを2倍(3バイトは6文字になります)、Base64は4:3になります(3バイトは4文字になります)。 – Andreas