Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

base64について

base64エンコードを以下のメソッドで行っているのですが、
エンコードされず、入力データがそのまま出力されます。

<コード>
    private static String encodeBase64(byte[] data) throws 
        IOException, 
        UnsupportedEncodingException, 
        MessagingException 
    {
      ByteArrayOutputStream bao = new ByteArrayOutputStream();
      OutputStream out = MimeUtility.encode(bao, "base64");
      out.write(data);
      out.close();
      return bao.toString("iso-8859-1");
    }


<環境>
WindowsXP SP2
jdk1.5.0_09

原因についてご存知でしたら、ご教授ください。
よろしくお願いいたします。

4

回答

4817

閲覧

4件の回答

評価

0

追加情報ですが、以下のコードだと問題なくエンコード
できました。

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

    private static String encodeBase64(byte[] data) throws 
        IOException, 
        UnsupportedEncodingException, 
        MessagingException 
    {
      return new String( Base64.encodeBase64( data ), "iso-8859-1" );
    }

評価

0

JavaMail 1.3があったのでライブラリーにパスを通して下のTestを実行したところ YWJjZWZnaGlqaw== が出力されたのでそのコードでエンコードされると思います。

うまくいかない原因としては
・キャッチした例外を握りつぶしている。
・結果の確認方法に誤りがある。
・想定しているのとは別のMimeUtilityクラスをロードしている。
などが考えられます。

解決しない場合には使っているMimeUtilityクラスを含むJARのライブラリーやそのバージョンと実行可能なコードを提示していただければこちらで試してみますが。

import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import javax.mail.internet.MimeUtility;

public class Test {
    public static void main(String[] args) throws Exception {
        byte[] bytes = "abcefghijk".getBytes();
        ByteArrayOutputStream bao = new ByteArrayOutputStream();
        OutputStream out = MimeUtility.encode(bao, "base64");
        out.write(bytes);
        out.close();
        System.out.println(bao.toString("iso-8859-1"));
    }
}

評価

0

ご回答ありがとうございます。
使用jarファイルは下記URLでダウンロード可能な、
seasarのS2MAIで、ダウンロードしたZIPファイルを解凍
すると、libフォルダの中に
geronimo-j2ee_1.4_spec-1.0.jar
というファイルがあります。このjarファイルにて
MimeUtilityを使用してます。
ちなみに、crowさんの提示しているサンプルコードも
試してみましたが、やはり暗号化されず、
「abcefghijk」がそのまま出力されました。

URL:seasarホームページのS2Mai
 http://s2mai.sandbox.seasar.org/ja/index.html

評価

0

crowさんの試されたJavaMailについて私のほうでも
試したところ、正しく動作しました。
ということはS2MaiのjarファイルのほうがNGということ
のようですね。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。