TVTablesViewer Открыть

Кодировка CSV и загадочный BOM

Excel открывает UTF-8 без BOM как windows-1251 — и получается «РОССИЯ». Это не ошибка Excel и не ошибка файла: в CSV просто негде написать, в какой он кодировке.

Обновлено 2026-09-20 · формат CSV

В CSV нет места для кодировки

XML объявляет кодировку в прологе, JSON по стандарту всегда UTF-8, DBF хранит код в заголовке. В CSV нет ничего: это просто текст с запятыми. Читающая программа обязана угадать — или спросить.

Excel не спрашивает: при двойном щелчке он берёт кодировку системы, то есть windows-1251 в русской Windows. Всё, что не в ней, превращается в кашу.

Что такое BOM и почему он выручает

BOM (byte order mark) — три служебных байта EF BB BF в начале файла. Формально они означают «здесь UTF-8», и Excel их понимает: файл с BOM открывается правильно даже двойным щелчком.

Обратная сторона: эти байты видны всем остальным. Программа, которая про BOM не знает, прочитает первое имя колонки как Код — с невидимым символом в начале, из-за которого не сойдётся сопоставление полей. Классическая причина загадочного «колонка Код не найдена».

Поэтому правило простое: BOM — если файл предназначен человеку с Excel; без BOM — если файл предназначен программе.

Как определить кодировку по содержимому

UTF-8 узнаётся структурно: в нём старшие байты идут строго определёнными последовательностями. Если файл этому правилу соответствует и при этом содержит не-ASCII байты — это почти наверняка UTF-8.

Если структура не подходит, остаются однобайтовые варианты, и тут решает содержимое: текст декодируется каждым кандидатом, а победителем становится тот, где получается похожий на русскую речь текст — без псевдографики и без заглавных букв посреди слов.

Этот же механизм используется для DBF и описан подробнее в статье про кракозябры в DBF.

Разделитель: вторая половина той же проблемы

Стандарт говорит «запятая», а русский Excel по умолчанию ждёт точку с запятой — потому что запятая занята под десятичный разделитель. Отсюда файлы, которые открываются одним столбцом.

Определить разделитель можно надёжно: перебрать кандидатов и выбрать тот, при котором во всех строках получается одинаковое число полей. Важно считать с учётом кавычек — иначе адрес с точкой с запятой внутри развалит статистику.

Если уверенного ответа нет (например, строки действительно рваные), честнее сказать об этом и дать переключить вручную, чем молча показать неверную таблицу.

Как сохранять, чтобы не было проблем

В диалоге экспорта TablesViewer это три готовых сочетания, а не абстрактный список кодировок.

Частые вопросы

Почему после сохранения из Excel файл стал в windows-1251?

Excel сохраняет «CSV» в системной кодировке. Нужен UTF-8 — выбирайте «CSV UTF-8 (разделитель — запятая)» отдельным пунктом.

Можно ли убрать BOM?

Да, это просто первые три байта файла. Любой редактор с выбором кодировки позволяет пересохранить без него.

Что делать, если в файле смешаны кодировки?

Разделить файл на части по источникам и обработать отдельно: одной таблицей перекодировать такое нельзя.

Файл не покидает ваш компьютер. Разбор идёт в браузере, в фоновом потоке. Политика безопасности страницы запрещает отправлять данные на сторонние адреса — это проверяется в инструментах разработчика. После первого открытия приложение работает и без интернета.
Открыть приложение

Ещё по теме