Складская программа поставщика или старая «1С: Торговля» выгружает прайс в CSV, а загрузчик маркетплейса отвечает: «неверная кодировка, требуется UTF-8». Файл не битый — он записан в Windows-1251 (она же CP1251), и для программ эпохи Windows XP это штатное поведение. Разберём, как распознать такой файл, чем перекодировать и как проверить результат до отправки.
Как распознать CP1251 по кракозябрам
Кодировка — это таблица, по которой байты превращаются в буквы. В CP1251 кириллица занимает по одному байту на символ, в UTF-8 — по два. Когда файл читают не по той таблице, получается два характерных узора:
- Прайс вместо «Прайс». Много букв «Р» с закорючками — это UTF-8, прочитанный как Windows-1251. Файл уже в нужной кодировке, перекодировать его не надо: проблема только в программе, которой вы его открыли.
- «Прайс» превращается в Пй или ромбики с вопросами. Это обратная ситуация: CP1251, прочитанный как UTF-8. Однобайтные коды кириллицы не складываются в допустимые последовательности UTF-8, и редактор заменяет их символом «неизвестно». Это как раз наш случай — файл надо перекодировать.

Быстрый тест без угадывания: откройте файл в Notepad++ — кодировка указана в правом нижнем углу. «ANSI» или «Windows-1251» означает CP1251, «UTF-8» — файл уже готов. Общая картина кодировок и способы смены есть в статье про кодировку CSV, здесь сосредоточимся на конкретном переезде 1251 → UTF-8.
Ручные способы перекодировки
Notepad++
- Откройте CSV в Notepad++.
- Меню «Кодировки» → «Преобразовать в UTF-8».
- Сохраните файл.
Важен именно пункт «Преобразовать», а не «Кодировка UTF-8»: первый переписывает байты файла, второй только меняет отображение на экране — после сохранения кракозябры останутся. Для одного файла это 30 секунд. Для десятка прайсов от поставщиков каждый понедельник — рутина, в которой один файл неизбежно забудут.
Excel через промежуточное сохранение
- «Данные» → «Получить данные» → «Из текстового/CSV-файла» → в предпросмотре выбрать кодировку 1251 (Cyrillic Windows).
- Загрузить данные на лист.
- «Файл» → «Сохранить как» → тип «CSV UTF-8».
Способ рабочий, но громоздкий: три шага вместо одного, а по дороге Excel успевает навредить — обрезать ведущие нули в артикулах, превратить штрихкоды в числа вида 4,6E+12, перекроить даты. В Excel 2013 и старше типа «CSV UTF-8» нет вовсе, поэтому добавляется четвёртый шаг — пересохранение через «Блокнот». Подробности сохранения из Excel разобраны в статье про Excel в CSV в UTF-8.
Короткий путь: конвертер
Если файл регулярно приходит в CP1251, а отдать его нужно в UTF-8, перекодировку удобно совместить с остальной обработкой прайса. В EasyExcel загружается CSV как есть: конвертер сам распознаёт UTF-8, Windows-1251 и UTF-16 — кириллица видна сразу, без выбора кодировки руками.

Дальше файл проходит стандартные шаги: «Структура» (с какой строки начинается таблица), «Колонки» (переименование под шаблон площадки, наценка через действие «Умножить», склейка полей по шаблону), «Фильтры» (например, отбросить строки без остатков) — и «Экспорт». На выходе всегда один результат: CSV в UTF-8 с точкой с запятой либо XLSX, где понятия кодировки нет вовсе.

То есть один проход заменяет и перекодировку, и подгонку под шаблон. Бесплатно и без регистрации доступны файлы до 2 МБ и 3 конвертации в день — попробовать можно на странице конвертации в CSV. Файл хранится на сервере не дольше часа и удаляется автоматически.
BOM: что это и когда он нужен
BOM (Byte Order Mark) — три служебных байта в самом начале файла. Человеку они невидимы, а программа читает их первыми и сразу понимает: дальше UTF-8. Главный потребитель этой подписи — Excel: UTF-8 без BOM русский Excel при двойном клике может принять за ANSI и показать кракозябры, хотя файл корректен.
Парсерам маркетплейсов, 1С и Битрикс24 BOM обычно безразличен — они его отбрасывают. Поэтому безопасный вариант — UTF-8 с BOM: его одинаково правильно понимают и Excel, и системы загрузки. Конвертер пишет именно такой файл, так что файл можно и отправить на площадку, и открыть для проверки в Excel. Если же нужен обратный путь — открыть чужой UTF-8 в Excel без кракозябр — это разобрано в статье про CSV в Excel без кракозябр.
Как проверить результат
- Notepad++. Правый нижний угол: «UTF-8» или «UTF-8-BOM». Всё остальное — не то.
- Блокнот Windows 10/11. Кодировка видна в строке состояния внизу окна.
- Excel. Откройте файл двойным кликом: кириллица на месте — BOM есть, и Excel файл понял.
- Тестовая загрузка. Загрузите несколько строк в площадку или учётную систему до полной выгрузки: ошибки кодировки всплывают на первом же файле.
И последний рубеж контроля — глазами: откройте исходник и результат рядом и сверьте пару строк с кириллицей, цифрами и длинными артикулами. Перекодировка 1251 → UTF-8 сама по себе данные не трогает, но лишние преобразования по дороге (например, через Excel) — вполне могут.
Частые вопросы
CP1251, Windows-1251 и ANSI — это одно и то же?
Да, три названия одной кодировки: CP1251 — имя таблицы, Windows-1251 — её полное название, ANSI — ярлык, под которым её показывают «Блокнот» и Excel в русской Windows. Все три означают однобайтную кириллическую кодировку, отличную от UTF-8.
Теряются ли данные при перекодировке из CP1251 в UTF-8?
Нет, это обратимая операция: каждый символ из таблицы 1251 имеет точный аналог в UTF-8. Потери случаются раньше — на этапе записи в 1251: если в исходных данных были иероглифы, греческие буквы или эмодзи, их уже заменили на знаки вопроса, и восстановить их из CP1251-файла нельзя.
Система требует UTF-8 без BOM, а у меня файл с BOM — это проблема?
Обычно нет: BOM — легальная часть стандарта UTF-8, и нормальные загрузчики его отбрасывают. Если конкретная система капризничает, откройте файл в Notepad++ и примените «Кодировки» → «Преобразовать в UTF-8 без BOM», затем сохраните.
Поставщик не умеет выгружать в UTF-8. Что делать?
Ничего не требовать от поставщика — принимайте файл в CP1251 как есть и перекодируйте на своей стороне. Самый быстрый способ — прогнать CSV через конвертер: на входе он понимает CP1251 автоматически, на выходе всегда отдаёт UTF-8, заодно с приведением колонок и фильтрацией строк.