Excel в CSV в UTF-8: зачем кодировка решает всё

Отправляете прайс на площадку или подрядчику, а в ответ приходит «файл не читается» — или, хуже, молчаливая загрузка, после которой у получателя вместо «Ноутбук Lenovo» красуется Ноутбук. Таблица ни при чём: Excel по умолчанию сохраняет CSV в Windows-1251 (она же «ANSI»), а система на той стороне ждёт строго UTF-8. Разберёмся, что именно ломается и как получить правильный файл без ручных танцев.

Что ломается при неправильной кодировке

CSV — обычный текст: байты превращаются в буквы по таблице кодировки. Файл записан по одной таблице, а прочитан по другой — и кириллица рассыпается. На практике у этого три сценария:

  • Кракозябры у получателя. Менеджер площадки или клиент открывает файл и видит Прайс вместо «Прайс». Доверие к прайсу подорвано ещё до знакомства с ценами.
  • Отказ загрузки. Загрузчик маркетплейса, 1С или Битрикс24 читает байты как UTF-8, натыкается на недопустимую последовательность и отклоняет файл целиком — с сообщением о кодировке или невнятной ошибкой парсинга.
  • Тихая порча данных. При сохранении в ANSI Excel молча заменяет символы, которых нет в таблице 1251 — греческие буквы в артикулах, иероглифы, эмодзи — на знаки вопроса. Обратно их уже не восстановить.

Почему Excel сохраняет «не так»

Причина историческая: русская Windows десятилетиями жила в Windows-1251, и Excel при «Сохранить как → CSV» до сих пор использует её под именем ANSI. Для интернета, API и современных учётных систем стандарт — UTF-8. Отсюда конфликт: один и тот же файл «правильный» для Excel и «битый» для загрузчика площадки.

Общий разбор кодировок и способы перекодировать уже готовый файл — в статье про кодировку CSV. Здесь же сосредоточимся на моменте сохранения из Excel.

Как сохранить CSV в UTF-8 из Excel

Excel 2016 и новее (Microsoft 365)

  1. «Файл» → «Сохранить как» → «Обзор».
  2. В поле «Тип файла» выберите «CSV UTF-8 (разделители — запятые)».
  3. Сохраните.

Два нюанса. Первый: несмотря на «запятые» в названии, в русской локали Excel запишет разделитель из региональных настроек — чаще всего точку с запятой; чем это грозит и как проверить, разбираем в статье про разделитель в CSV. Второй: Excel добавит в начало файла BOM-подпись — о ней ниже.

Диалог «Сохранить как» в Excel: выбран тип «CSV UTF-8»
В новых версиях Excel тип «CSV UTF-8» уже есть в списке форматов

Excel 2013 и старше

Отдельного типа «CSV UTF-8» там нет, поэтому путь в два шага:

  1. Сохраните как обычный CSV — получите файл в ANSI.
  2. Откройте его в «Блокноте» → «Файл» → «Сохранить как» → кодировка «UTF-8» → «Сохранить».

Для одного файла на 50 строк терпимо. Но если прайсов десятки и в каждом по 800 позиций, рутина гарантированно приведёт к ошибке: один файл забудете пересохранить — и узнаете об этом от получателя. Подробнее про сам переезд с 1251 читайте в статье про перекодировку Windows-1251 в UTF-8.

Как проверить кодировку готового файла

  • Блокнот (Windows 10/11). Кодировка указана в строке состояния внизу окна: «UTF-8» или «ANSI». Там же она видна в диалоге «Сохранить как».
  • Notepad++. Кодировка показана в правом нижнем углу, а меню «Кодировки» → «Преобразовать в UTF-8» делает настоящую перекодировку, а не просто меняет отображение.

Быстрый визуальный тест: откройте CSV в «Блокноте». Кириллица читается — кодировка совпала с той, что определил блокнот. Кракозябры — файл записан в другой кодировке.

Конвертер: UTF-8 на выходе всегда

Вопрос кодировки снимается, если файл не сохранять руками из Excel, а получать готовым. В EasyExcel загружается исходный прайс (.xls, .xlsx или CSV), затем проходятся шаги «Структура», «Колонки» и «Фильтры» — и на экспорте выбирается CSV.

Шаг «Структура» в конвертере: превью загруженного прайса
Исходник можно загрузить в любом виде: XLS, XLSX или CSV

На выходе всегда один и тот же формат: CSV в UTF-8 с точкой с запятой. Такой файл:

  • корректно открывается русским Excel — BOM-подпись в начале подсказывает ему, что это UTF-8;
  • принимается системами, которые требуют строго UTF-8: маркетплейсами, 1С, Битрикс24, самописными загрузчиками.

Заодно в тех же шагах решаются смежные задачи: переименовать колонки под шаблон площадки, отфильтровать строки без остатков, убрать мусор из ячеек. Попробовать можно бесплатно — файлы до 2 МБ и 3 конвертации в день на странице конвертации в CSV.

Шаг «Экспорт» в конвертере: CSV в UTF-8 с точкой с запятой
На выходе — CSV строго в UTF-8: его поймут и Excel, и системы загрузки

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

Что такое BOM и зачем он?

BOM (Byte Order Mark) — служебная подпись из трёх байтов в самом начале файла. Человеку она невидима, а программа читает её первой и сразу понимает: дальше UTF-8. Главный потребитель подписи — Excel: без BOM он может принять корректный UTF-8 за ANSI и показать кракозябры. Парсеры учётных систем BOM обычно просто пропускают.

Как понять, что в файле точно UTF-8?

Откройте файл в Notepad++ и посмотрите в правый нижний угол: там будет «UTF-8» или «UTF-8-BOM». В «Блокноте» Windows 10/11 кодировка указана в строке состояния. Если при открытии кириллица превратилась в кракозябры — редактор угадал не ту кодировку, и это самый быстрый сигнал, что файл не в UTF-8.

Система требует UTF-8 без BOM, а файл с BOM — это проблема?

Для большинства загрузчиков — нет: BOM легальная часть стандарта UTF-8, и его отбрасывают при чтении. Если какая-то система капризничает, откройте файл в Notepad++ и примените «Кодировки» → «Преобразовать в UTF-8 без BOM», затем сохраните.

Почему после сохранения в ANSI часть текста стала вопросительными знаками?

Таблица Windows-1251 вмещает только кириллицу, латиницу и базовую пунктуацию. Всё остальное — греческие буквы, иероглифы, редкие символы — Excel при записи в ANSI заменяет на «?» безвозвратно. Поэтому мастер-копию прайса держите в XLSX или UTF-8, а ANSI не используйте для файлов, которые пойдут дальше.