Base64编码和解码apache commons

时间:2016-06-22 16:38:56

标签: java encoding base64 apache-commons decoding

我注意到以下代码有什么问题。我试图用base64编码编码JPG文件。编码后,我检查它是base64编码,它返回false。我无法找到我失踪的东西。

    public String  encodeBinary64(String value){
     String output = null;
     System.out.println("encoding the binary length "+value.length());

    byte[] byteArray = Base64.encodeBase64(value.getBytes());
         output = Arrays.toString(byteArray);

          System.out.println("output length encoding"+output.length());
          Boolean base64Encoded = Base64.isBase64(output); -- returning FALSE

          System.out.println("Base 64 Encoded "+ base64Encoded );


     return output;

 }

更新2

以下建议的解决方案有所帮助。然而,在解码base64编码图像后,当我尝试打开时,我得到 Windows Photo Viewer无法打开消息。下面是代码。

         public String  decodeBinary64(String value){
     String output = null;
     System.out.println("Decoding the binary length "+value.length());

      Boolean base64Encoded = Base64.isBase64(value);
       System.out.println("base64Encoded "+base64Encoded);
      if(base64Encoded){
          byte[] byteArray = Base64.decodeBase64(value.getBytes());
        try {
            output =   new String(byteArray, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

          System.out.println("output length "+output.length());
      }


     return output;

 }

注意:

我在编码之前和解码之后验证了文件的长度。大小保持不变。但该文件无法打开。

1 个答案:

答案 0 :(得分:1)

Arrays.toString(),在字节数组[1, 2, 3]上,返回字符串"[1, 2, 3]"

你想要的是new String(byteArray, "ASCII")