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

Java SE 8 Base64 class: encoding of byte[] parameter

背景:我正在使用 java.util.Base64 class,这是 Java 1.8.

的新功能

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

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 是否会接受任何编码的 byte[]。我试过 US-ASCII 和 UTF-8,它们都有效,但我希望得到一个普遍的结论。

Link to Javadoc for Base64.Encoder

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