Java SE 8 Base64类:byte []参数的编码

时间:2015-04-10 21:17:41

标签: java encoding base64 java-8

背景:我正在使用Java 1.8中新增的java.util.Base64类。

在文档中,它指定encodeToString接受一个字节数组(还有一些其他选项,但是byte []是我正在使用的那个)。但是,doc没有指定字节数组是如何编码的。这是我的功能代码:

import java.util.Base64;
import java.util.Base64.Encoder;
public class Test64 {
    public static void main(String[] args){
        try{
            System.out.println(print64("This should be base64"));
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static String print64(String test) throws Exception {
        String test64 = "";
        byte[] testBytes = test.getBytes("US-ASCII");
        Base64.Encoder encoder64 = Base64.getUrlEncoder();
        test64 = encoder64.encodeToString(testBytes);
        return test64;
    }
}

我遇到的问题是Base64 encodeToString是否接受带有ANY编码的byte []。我已经尝试过US-ASCII和UTF-8,但这两种方法都有效,但我希望得出一个总体结论。

Link to Javadoc for Base64.Encoder

1 个答案:

答案 0 :(得分:8)

文档未指定编码,因此任何byte[]数据都可以使用。 Base64转换是数字的,而不是面向字符的,所以无论谁解释Base64号码都必须知道它的含义。因此,只要您的文档清楚如何解释字节,就可以使用Base64字符串进行任何数据序列化。