Класс Java SE 8 Base64: кодирование параметра byte []

1

Предпосылки: Я работаю с классом 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, и они оба работают, но я надеюсь на общий вывод.

Ссылка на Javadoc для Base64.Encoder

  • 5
    Base64 - это общее преобразование между любыми байтами и читаемыми символами ASCII. Кодировка не имеет значения.
  • 1
    Помните, base64 также используется для кодирования изображений, звуковых файлов и т. Д. - он даже не рассматривает свои входные данные как «закодированную строку» в любой форме.
Показать ещё 3 комментария
Теги:
base64
java-8
encoding

1 ответ

8
Лучший ответ

В документации не указывается кодировка, поэтому любые byte[] данные будут работать. Преобразование Base64 является числовым, а не характерным, поэтому любой, кто интерпретирует номер Base64, должен знать, что это значит. Итак, пока ваша документация ясна, как интерпретировать байты, вы можете использовать строку Base64 для любой сериализации данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню