2012-02-28 7 views
0

Apache CommonのBase64エンコーディング機能を使用しようとしています。しかし、私は "間違った"結果を得ているようです。ドキュメントはhereです。Apache base64エンコーディングの出力が「間違っている」共通

私のコードは次のようである:私は、Pythonを使用して同じ文字列をエンコードしかし

import org.apache.commons.codec.binary.Base64; 
String data = "hi,all,how can this happen?"; 

byte[] databytes = Base64.encodeBase64(data.getBytes()); 
data = databytes.toString(); 

System.out.println(data); 
//the result is: 
//[[email protected] 

、コードは次のとおりです。

import base64 
print base64.b64encode("hi,all,how can this happen?") 
#The result is aGksYWxsLGhvdyBjYW4gdGhpcyBoYXBwZW4/ 

どのような違いがあることができますか?

+5

そのをエンコードします。 – Dan675

+3

'@'が有効なBase64 charではないことを認識しませんでしたか?あなたは 'byte []'オブジェクトの 'toString()'を呼び出しています。 – st0le

+0

新しい文字列(データ)を使用します。 –

答えて

4

Javaのバイト(または他のタイプの)配列をどのように表示するかは、その内容を表示したい場合には当てはまりません。
This is

System.out.println(Arrays.toString(data)); 
+0

ありがとう、それは少し変更されます。しかし、なぜ私はそれを印刷した後に整数の配列を見るのですか?どのように文字列に変換できますか? – xiaohan2012

+0

JavaDocを読んでください。 'Arrays.toString(byte [])'が返す文字列の書式について説明します。 SOには、Javaでbase64文字列を取得する方法を教えてくれる他にもたくさんの質問があります。私はあなたが検索して読むことをお勧めします。 –

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

    public class Codec { 
     public static void main(String[] args) { 
     try { 
      String data = "hi,all,how can this happen?"; 
      String encodedText; 

      // Base64 
      encodedText = new String(Base64.encodeBase64(data.getBytes())); 
      System.out.println("Encoded: " + encodedText); 
      System.out.println("Decoded:" 
       + new String(Base64.decodeBase64(encodedText.getBytes()))); 

     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 
    } 

は、今ではそれへの参照ではなく、エンコーディングを印刷し、あなたの文字列データ

関連する問題