Как пользоваться
- Выберите «Кодировать», чтобы получить блок xxencode, или «Декодировать», чтобы превратить его обратно в данные.
- Оставьте параметр «Строки begin / end» включённым и укажите «Имя файла», чтобы получить полный блок, или отключите его, чтобы получить только строки данных.
- Введите или вставьте исходные данные либо откройте файл. Результат обновляется по мере ввода.
- Скопируйте результат или скачайте его. Если при декодировании данные оказались не текстом, выберите формат вывода Hex или скачайте файл.
Что такое xxencode?
Xxencode сохраняет структуру uuencode и меняет только символы. Каждые 3 байта по-прежнему превращаются в четыре 6-битных значения, строки данных по-прежнему содержат до 45 байт после символа длины, а блок по-прежнему располагается между строкой begin 644 name и строкой end.
64 значения сопоставлены символам +, -, цифрам 0-9, заглавным буквам A-Z и строчным буквам a-z именно в этом порядке. Символ длины использует ту же таблицу, поэтому полная строка из 45 байт начинается с h, а пустая строка перед end состоит из одного символа +. Поскольку структура идентична, размер результата такой же, как у uuencode: примерно на 38% больше исходных данных с учётом символов длины и переводов строк.
Зачем был создан xxencode
Результат uuencode полон знаков препинания, таких как [, ], \, ^ и !. В мейнфреймах IBM используется EBCDIC, а не ASCII, и в разных кодовых страницах EBCDIC эти символы находятся на разных позициях. Когда почта проходила через шлюзы между сетями ASCII и EBCDIC, такие символы могли преобразовываться неправильно, и файл повреждался.
Буквы, цифры, плюс и минус одинаковы во всех кодовых страницах EBCDIC, поэтому текст в формате xxencode без потерь преобразуется в обе стороны. Позже той же цели достиг MIME: Base64 тоже использует только буквы, цифры и несколько символов, одинаковых в ASCII и EBCDIC. Xxencode так и не стал столь же распространённым, как uuencode, и в конце концов Base64 вытеснил их обоих.
Сравнение uuencode и xxencode
| Uuencode | Xxencode | |
|---|---|---|
| Символы | ASCII от 32 до 95, обратный апостроф для нуля | + - 0-9 A-Z a-z |
| Начало полной строки из 45 байт | M | h |
| Последняя строка перед end | ` | + |
| Безопасность при передаче через шлюзы EBCDIC | Нет | Да |
Спецификация
| Алфавит | + - 0-9 A-Z a-z |
|---|---|
| Размер результата | Около 137% с учётом префиксов строк |
| Дополнение | Строки до 45 байт |
| Стандарт | xxencode |
| Учёт регистра | Да |
Примеры
| Исходные данные (UTF-8) | Результат |
|---|---|
Hello, World! | begin 644 data.bin
BG4JgP4wg63RjQalY6E++
+
end |
Base64.is | begin 644 data.bin
7Ea3nNHMo9aZn
+
end |
你好 | begin 644 data.bin
4t9qUtOKx
+
end |
Часто задаваемые вопросы
Как отличить uuencode от xxencode?
h. Строки uuencode содержат знаки препинания, а полные строки начинаются с M. Если декодирование здесь завершается ошибкой о недопустимом символе, попробуйте страницу uuencode.Записывает ли инструмент строки begin и end?
begin 644 с указанным вами именем файла и завершающие строки. Отключите этот параметр, если вам нужны только закодированные строки данных.Можно ли декодировать блок без строки begin?
Да. Если строки begin нет, каждая непустая строка декодируется как данные. Если она есть, декодирование начинается после неё и заканчивается на строке end, поэтому окружающий текст игнорируется.