JavaでBase64としてエンコードする 質問する

JavaでBase64としてエンコードする 質問する

Java で一部のデータを Base64 エンコードする必要があります。どうすればいいですか? Base64 エンコーダーを提供するクラスの名前は何ですか?


クラスを使用しようとしましたがsun.misc.BASE64Encoder、成功しませんでした。次の Java 7 コード行があります。

wr.write(new sun.misc.BASE64Encoder().encode(buf));

私は Eclipse を使用しています。Eclipse はこの行をエラーとしてマークします。必要なライブラリをインポートしました:

import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;

しかし、どちらもエラーとして表示されます。同様の投稿はこちら

私は、次の内容を含めることで、提案された解決策として Apache Commons を使用しました。

import org.apache.commons.*;

以下からダウンロードした JAR ファイルをインポートします。http://commons.apache.org/codec/

しかし、問題はまだ残っています。Eclipse では前述のエラーが引き続き表示されます。どうすればよいでしょうか?

ベストアンサー1

クラスのインポートを変更する必要があります:

import org.apache.commons.codec.binary.Base64;

次に、Base64 クラスを使用するようにクラスを変更します。

以下にコード例を示します。

byte[] encodedBytes = Base64.encodeBase64("Test".getBytes());
System.out.println("encodedBytes " + new String(encodedBytes));
byte[] decodedBytes = Base64.decodeBase64(encodedBytes);
System.out.println("decodedBytes " + new String(decodedBytes));

次に読むsun.* パッケージを使用すべきでない理由


更新 (2016-12-16)

Java 8 で使用できるようになりましたjava.util.Base64。まず、通常どおりにインポートします。

import java.util.Base64;

次に、Base64 静的メソッドを次のように使用します。

byte[] encodedBytes = Base64.getEncoder().encode("Test".getBytes());
System.out.println("encodedBytes " + new String(encodedBytes));
byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes);
System.out.println("decodedBytes " + new String(decodedBytes));

文字列を直接エンコードし、結果をエンコードされた文字列として取得する場合は、次のようにします。

String encodeBytes = Base64.getEncoder().encodeToString((userName + ":" + password).getBytes());

見るBase64 の Java ドキュメント多くのための。

おすすめ記事