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));
更新 (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 ドキュメント多くのための。