質問

String encode = Base64.encodeBase64String("Hello".getBytes());
System.out.println(encode);
byte[] decode = Base64.decodeBase64(encode);
System.out.println(decode.toString());

ここで何が悪いのかわかりません。私はそこにあるすべての可能な組み合わせを試しました。チャーセット、トストリング、タストリングを設定します。エンコードは完全に機能します。その番号をWebデコーダーに投げ込み、毎回適切な値を取得できます。これを機能させることはできません。

出力:

 run:
SGVsbG8= (encode)

[B@1fb8ee3  (decode)

ループ用に使用し、文字列に文字を手動で追加すると、機能させることができます。しかし、私はTostringが私のためにそれをしたと思いましたか?

役に立ちましたか?

解決

当面の問題は、バイト配列を文字列に変換する方法です。

代わりにこれを試してください:

System.out.println(new String(decode));

でも, 、一般的には、の過負荷を使用することは悪い考えです String.getBytes() また new String(byte[]) 文字エンコードを指定しません。プラットフォームのデフォルトエンコードを使用します。これは、コードがポータブルではないことをすぐに意味します。 UTF-8などの一般的なエンコードを使用することをお勧めします。

他のヒント

toString() 配列では、あなたが期待していることをしません...それは単なるデフォルトです toString() からの実装 Object, 、オブジェクトのハッシュコードに基づいて文字列を返します。試す new String(decode).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top