1. ホーム
  2. java

[解決済み] base64のエンコード/デコードを提供するJavaライブラリはどれですか?重複

2023-05-08 08:52:18

質問

私は、base64エンコード/デコードのためにどのライブラリを使用するべきか疑問に思っています。私は、この機能が本番使用のために十分に安定している必要があります。

どのように解決するのですか?

Java 9

Java 8 の解決策を使用する。注意 DatatypeConverterはまだ使えるが、現在は java.xml.bind モジュールに含まれている。

module org.example.foo {
    requires java.xml.bind;
}

Java 8

Java 8 では java.util.Base64 を利用できるようになりました。

エンコーディング

byte[] message = "hello world".getBytes(StandardCharsets.UTF_8);
String encoded = Base64.getEncoder().encodeToString(message);
System.out.println(encoded);
// => aGVsbG8gd29ybGQ=

デコード

byte[] decoded = Base64.getDecoder().decode("aGVsbG8gd29ybGQ=");
System.out.println(new String(decoded, StandardCharsets.UTF_8));
// => hello world

Java 6と7

Java 6 からは、あまり知られていないクラス javax.xml.bind.DatatypeConverter を使うことができます。これはJREの一部であり、追加のライブラリは必要ありません。

エンコーディング

byte[] message = "hello world".getBytes("UTF-8");
String encoded = DatatypeConverter.printBase64Binary(message);
System.out.println(encoded);
// => aGVsbG8gd29ybGQ=  

デコード

byte[] decoded = DatatypeConverter.parseBase64Binary("aGVsbG8gd29ybGQ=");
System.out.println(new String(decoded, "UTF-8"));
// => hello world