Что такое ASCII-8BIT?
ASCII-8BIT - это двоичное кодирование Ruby (имя «BINARY» принимается как псевдоним для «ASCII-8BIT» при указании имени кодировки). Он используется как для двоичных данных, так и для текста, реальная кодировка которого вам неизвестна.
Любая последовательность байтов является допустимой строкой в кодировке ASCII-8BIT, но в отличие от других 8-битных кодировок, только байтыв диапазоне ASCII считаются печатные символы (и, конечно, только те, которые можно печатать в ASCII). Байты в диапазоне 128-255 считаются специальными символами, которые не имеют представления в других кодировках. Поэтому попытка преобразовать строку ASCII-8BIT в любую другую кодировку не удастся (или заменит символы, не входящие в ASCII, на вопросительные знаки в зависимости от параметров, которые вы задаете для encode
), если только она не содержит только символы ASCII.
Каков его эквивалент в мире Scala / JVM?
Нет строгого эквивалента. Если вы имеете дело с двоичными данными, вам следует использовать двоичные потоки, которые не имеют кодировки и не рассматриваются как содержащие текст.
Если вы имеете дело с текстом, вам либо понадобитсяузнать (или как-то выяснить) его кодировку или просто произвольно выбрать 8-битную кодировку ASCII-надмножества. Таким образом, не-ASCII-символы могут выглядеть как неправильные символы (если текст был действительно закодирован с другой кодировкой), но вы не получите никаких ошибок, потому что любой байт является допустимым символом. Затем вы можете заменить не-ASCII символы на вопросительные знаки, если хотите.
Какое это имеет отношение к Base64?
Ничего. Base64 - это способ представления двоичных данных в виде текста ASCII. Само по себе это не кодировка символов. Зная, что строка имеет кодировку символов ASCII или ASCII-8BIT или любую другую кодировку, вы не узнаете, содержит ли она данные Base64 или нет.
Но учтите, что строка Base64 будет состоять полностью из символов ASCII(и не только любые символы ASCII, но только буквы, цифры, +
, /
и =
). Поэтому, если ваша строка содержит любой не-ASCII-символ или любой символ, кроме вышеупомянутого, это не Base64.
Поэтому любая строка Base64 может быть представлена как ASCII. Поэтому, если у вас есть строка ASCII-8BIT, содержащая данные Base64 в Ruby, вы сможете преобразовать ее в ASCII без каких-либо проблем. Если вы не можете, это не Base64.