CSV: разделители, кодировки и типичные ошибки открытия
CSV — это текст, где строки разделены переводом строки, а поля — запятыми. Формат простой, но именно поэтому в нём нет единого стандарта. Разные программы по-разному решают, что считать разделителем и в какой кодировке читать файл. Отсюда большинство проблем. Ниже — как их избежать.
Что такое CSV
Это текст, где строки разделены переводом строки, а поля — запятыми. Формат простой, но именно поэтому в нём нет единого стандарта: разные программы по-разному решают, что считать разделителем и в какой кодировке читать файл. Отсюда большинство проблем.
Разделитель
В русскоязычной среде часто используется точка с запятой, потому что запятая служит десятичным разделителем. Таблицы сохраняют файл с разделителем из локали, а другая программа ждёт запятую. Если весь файл оказался в одном столбце, дело почти всегда в этом.
Как определить разделитель
Откройте файл в текстовом редакторе и посмотрите на первую строку. Если между значениями стоят точки с запятой или табуляция, это и есть разделитель. Не угадывайте по значку в программе: она показывает то, что выбрано в настройках импорта.
Кодировка
Русские буквы ломаются, когда файл сохранён в одной кодировке, а открыт в другой. Типичный симптом — набор символов вместо слов. UTF-8 — самый безопасный выбор, но старые выгрузки часто приходят в другой кодировке, и это нужно проверять заранее.
Как исправить кракозябры
Импортируйте заново, указав кодировку вручную. Перебирать варианты быстрее, чем пересохранять файл. Если в файле смешаны кодировки, восстановление может быть неполным: проверьте несколько строк с разными буквами.
Кавычки
Если внутри поля есть разделитель, поле заключается в кавычки. Двойная кавычка внутри поля удваивается. Программа, которая этого не учитывает, разобьёт строку на лишние столбцы. Проверьте файлы с адресами и списками через запятую.
Перевод строки внутри поля
Такие поля тоже допустимы в кавычках, но ломают построчное чтение. Если в файле ожидаются многострочные тексты, уточните, поддерживает ли инструмент такой импорт. Иначе строки съедут, а число записей изменится.
Заголовки
Первая строка обычно содержит имена столбцов. Проверьте, что она не пустая и не продублирована. Некоторые системы добавляют служебную строку с типом отчёта. Удалите её до анализа, но сохраните копию исходника.
Пустые строки
В конце файла часто остаётся пустая строка. Она не влияет на большинство инструментов, но иногда превращается в запись с пустыми значениями. Проверьте число строк после импорта и сравните с ожидаемым.
Проверка после импорта
Сравните число строк и столбцов с ожидаемым. Посмотрите первые и последние строки. Проверьте, что числа стали числами, а даты — датами. Это занимает минуту и ловит большинство ошибок до анализа.
Экспорт с разделителем
Если вы сами сохраняете файл, выберите разделитель и кодировку осознанно и запишите их в описание. Коллега, открывающий файл на другой системе, не должен угадывать настройки. Это особенно важно при обмене между организациями.
Точка и запятая в числах
Если десятичный разделитель — запятая, а разделитель полей — тоже запятая, файл теряет структуру. Поэтому в таких локалях и используют точку с запятой. Проверьте числа с дробной частью: они первыми выдают проблему.
Типичные ошибки
Открывать файл двойным щелчком, не проверяя настройки, пересохранять с потерей типа, игнорировать кавычки и переводы строк, считать, что число столбцов совпадает с задуманным. Каждая ошибка искажает данные тихо.
Что сказать коллеге
При передаче файла укажите три вещи: разделитель, кодировку и наличие заголовка. Три строки в письме экономят час переписки. Если файл большой, добавьте число строк и столбцов для проверки.
Итог
CSV требует явных договорённостей: разделитель, кодировка и кавычки должны быть известны до импорта, а результат — проверен по числу строк и типов.
Как выбрать разделитель
Если данные содержат много запятых в тексте, выбирайте точку с запятой или табуляцию. Если десятичный разделитель — точка, запятая как разделитель полей не создаёт конфликта. Решение принимайте один раз и фиксируйте в описании набора.
Проверка на маленьком файле
Сделайте выгрузку первых двадцати строк и пройдите весь путь: сохранение, передача, импорт. Если работает, масштабируйте. Ошибки формата на большом файле искать гораздо дороже, особенно когда данные уже обработаны.
Что делать с существующими файлами
Не пересохраняйте архивные файлы «для порядка»: можно потерять исходную кодировку. Храните оригинал и рядом — рабочую копию в согласованном формате. Тогда при спорной ситуации всегда есть чем проверить.
Чек-лист
- Разделитель полей определён до импорта и совпадает с файлом.
- Кодировка указана явно, русский текст проверен.
- Поля с разделителем заключены в кавычки.
- Число столбцов одинаково во всех строках.
- Пустые строки в конце файла удалены.
- Первые и последние строки просмотрены вручную.
- Разделитель и кодировка записаны в описании набора.
Частые вопросы
Почему всё в одном столбце?
Не совпал разделитель полей.
Почему ломаются русские буквы?
Не совпала кодировка файла и импорта.
Что важнее всего?
Указать разделитель и кодировку до импорта.
Пример
Коллега прислал выгрузку, которая открывалась одной колонкой. В текстовом редакторе было видно, что разделитель — точка с запятой, а кодировка не совпадала с системной. После настройки импорта данные прочитались без единой правки.
Итог
CSV надёжен, когда разделитель и кодировка известны до импорта, а результат проверен по числу строк и типов.