0

Base64 テキストを含む byte[] があるとします。

このテキストを取得して、そこから文字列を作成します。

 str = new String(text,"charset");

新しい文字列を作成するとき、どうすれば元のテキストから情報を漏らしていないことを確認できますか?

つまり、new String(text, "charset") を実行するときに正しい文字セットを渡していることを確認するにはどうすればよいかということです。

元のエンコーディングが「cp-1255」で、str = new String(text,"UTF-8") を実行している場合、テキストが壊れている可能性がありますか?

4

3 に答える 3

1

Javaでのエンコーディング変換を確認する必要があると思います

元のテキストを台無しにしないために、入力も正しいエンコーディングで読み取る必要があります。

于 2013-02-05T08:44:33.337 に答える
1

Base64 の起源に依存する文字エンコーディングを知る必要があります。また、正しいエンコーディングを使用する必要があります。Base64 が UTF-8 でバイナリ データを表していない場合、UTF-8 を使用すると、ガベージが返されるか、例外がスローされます。

この場合、次のことを行う必要があります。

str = new String(bytes, "Windows-1255");

bytesbase64 文字列をデコードした結果のバイト配列はどこにありますか。

于 2013-02-05T09:15:05.833 に答える
1

まず、バイトを復号化/復号化する必要があります

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(encodedBytes);

次に、バイトから文字エンコーディングを検出する必要があります

于 2013-02-05T08:42:26.173 に答える