単純なBase64文字列をデコードしようとしていますが、デコードできません。現在、org.Apache.commons.codec.binary.Base64
パッケージを使用しています。
私が使用しているテスト文字列は、PHP YWJjZGVmZw==
を使用してエンコードされたabcdefg
です。
これは私が現在使用しているコードです:
Base64 decoder = new Base64();
byte[] decodedBytes = decoder.decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n") ;
上記のコードはエラーをスローしませんが、代わりにデコードされた文字列を期待どおりに出力しません。
使用しているパッケージを変更します。
import org.Apache.commons.codec.binary.Base64;
そして、次のように使用します:
byte[] decoded = Base64.decodeBase64("YWJjZGVmZw==");
System.out.println(new String(decoded, "UTF-8") + "\n");
以下は、Apache共通コーデックの最新バージョンで動作するはずです。
byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes));
およびエンコード用
byte[] encodedBytes = Base64.getEncoder().encode(decodedBytes);
System.out.println(new String(encodedBytes));
通常、base64は画像に使用されます。画像(この例ではorg.Apache.commons.codec.binary.Base64パッケージを使用したjpg)をデコードする場合:
byte[] decoded = Base64.decodeBase64(imageJpgInBase64);
FileOutputStream fos = null;
fos = new FileOutputStream("C:\\output\\image.jpg");
fos.write(decoded);
fos.close();
Apacheを使用したくない場合は、Java8を使用できます。
byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n");