Как декодировать Base64 в CSV
- Вставьте Base64 в поле Ввод · Base64. При открытии страницы загружен короткий пример.
- Проверьте строки в поле Результат · текст. Если разделитель, кавычки или буквы выглядят неправильно, вы узнаете об этом до того, как откроете файл где-то ещё.
- Если символы показаны как
�, выберите в поле Кодировка кодировку выгрузки. У файлов из старых программ под Windows это часто Windows-1252 или Windows-1251. - Нажмите Скачать. Если декодированные данные похожи на строки, разделённые запятыми, в строке статуса появится CSV, и файл сохранится как
decoded.csv. Короткие файлы и файлы с точкой с запятой или табуляцией в качестве разделителя определяются как Text и сохраняются какdecoded.txt; переименуйте их в.csv.
Скачивание записывает декодированные байты без изменений, какую бы кодировку вы ни выбрали для просмотра.
Пример
Пример aWQsbmFtZSxlbWFpbAoxLEFkYSxhZGFAZXhhbXBsZS5jb20KMixMaW51cyxsaW51c0BleGFtcGxlLmNvbQo= декодируется в:
id,name,email
1,Ada,ada@example.com
2,Linus,linus@example.com
Первые четыре символа, aWQs, декодируются в id,. Общего префикса, как у форматов файлов, у выгрузок CSV нет, но кое-что по началу строки узнать можно:
| Base64 начинается с | Что это значит |
|---|---|
77u/ | Метка порядка байтов UTF-8, типична для выгрузки «CSV UTF-8» из Excel |
//4 | Метка порядка байтов UTF-16LE, типична для выгрузок «Текст Юникод» (с табуляцией) |
UEsDB | Контейнер ZIP: книга XLSX, а не CSV |
H4sI | Данные, сжатые gzip; декодируйте их декодером gzip Base64 |
Откуда берутся CSV в Base64
API отчётов и аналитики часто возвращают выгрузку полем Base64 внутри JSON-ответа, потому что JSON не умеет хранить сырые байты файла. Вебхуки и очереди сообщений так же передают вложения, а автоматические письма несут вложения CSV как MIME-части в Base64; декодер писем извлекает их из исходного сообщения. API Git-хостингов возвращают содержимое файлов в Base64 с переносами строк, которые этот декодер пропускает.
Если в JSON-ответе несколько закодированных полей, декодирование Base64 внутри JSON найдёт их все сразу.
Как открыть декодированный файл в Excel
В CSV нет заголовка, который объявлял бы кодировку, поэтому табличные программы её угадывают:
- С BOM UTF-8 (Base64 начинается с
77u/) Excel правильно читает диакритику и нелатинские алфавиты при двойном щелчке по файлу. Пример такого файла:77u/aWQ7bmFtZTtjaXR5CjE7Wm/DqztLw7Zsbgo=,ZoëиKölnв нём целы. - Без BOM Excel в Windows использует устаревшую кодовую страницу системы, и текст в UTF-8 превращается в
Zoë. Вместо двойного щелчка используйте «Данные» > «Из текстового/CSV-файла» и выберите UTF-8. - Точка с запятой вместо запятой часто встречается в странах, где запятая служит десятичным разделителем, в том числе в России. Excel правильно открывает такие файлы, только если в системе разделителем элементов списка выбрана точка с запятой; иначе используйте диалог импорта и укажите разделитель.
Base64 в CSV в коде
import base64, csv, io
s = "aWQsbmFtZSxlbWFpbAoxLEFkYSxhZGFAZXhhbXBsZS5jb20KMixMaW51cyxsaW51c0BleGFtcGxlLmNvbQo="
raw = base64.b64decode(s)
with open("export.csv", "wb") as f:
f.write(raw)
rows = list(csv.reader(io.StringIO(raw.decode("utf-8-sig"))))
rows[1] # ['1', 'Ada', 'ada@example.com']
utf-8-sig убирает BOM, если он есть, и ничему не мешает, если его нет. В командной строке base64 -d export.b64 > export.csv делает то же, что кнопка «Скачать». Потоковая обработка больших файлов разобрана в статье Base64 в Python.
Вопросы и ответы
Как превратить Base64 в файл CSV?
Вставьте Base64 в поле выше и нажмите Скачать. Если инструмент распознал строки как CSV, файл сохранится как decoded.csv, иначе как decoded.txt. Его можно переименовать в .csv, содержимое от этого не изменится.
Почему в Excel кириллица и буквы с диакритикой превращаются в кракозябры?
Excel в Windows открывает файлы CSV без метки порядка байтов (BOM) в устаревшей кодовой странице. Импортируйте файл через «Данные» > «Из текстового/CSV-файла» и выберите UTF-8 (65001) или попросите отправителя выгрузить «CSV UTF-8» (такой файл начинается с BOM).
Мой Base64 начинается с UEsDB. Это CSV?
Нет, это контейнер ZIP: книга XLSX или выгрузка в архиве. Для таблиц используйте Base64 в Excel, для архивов подойдёт Base64 в ZIP.
Есть ли ограничение по размеру?
Жёсткого ограничения нет. Декодирование идёт в браузере, поэтому очень большие выгрузки упираются в память устройства; для файлов в несколько гигабайт практичнее base64 -d в командной строке.