Предпосылки: Я работаю с классом java.util.Base64, который является новым с 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 принимать байты [] с ЛЮБЫМ кодированием. Я пробовал US-ASCII и UTF-8, и они оба работают, но я надеюсь на общий вывод.
В документации не указывается кодировка, поэтому любые byte[]
данные будут работать. Преобразование Base64 является числовым, а не характерным, поэтому любой, кто интерпретирует номер Base64, должен знать, что это значит. Итак, пока ваша документация ясна, как интерпретировать байты, вы можете использовать строку Base64 для любой сериализации данных.