base64.decodebase64を動作させることができません(Commons Codec)
-
22-10-2019 - |
質問
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)
.
所属していません StackOverflow