Как поменять кодировку в CSV: кракозябры, UTF-8 и Windows-1251

Открываете CSV от поставщика или банка, а там Товар вместо «Товар». Файл не сломан — он в другой кодировке. Разберёмся, как поменять кодировку в CSV и почему это вообще происходит.

Почему кракозябры

CSV — просто текст. Байты превращаются в буквы по таблице кодировки, и таблиц две:

  • UTF-8 — стандарт в интернете и современных системах.
  • Windows-1251 — «ANSI», привычная кодировка русской Windows и старых программ.

Если файл записан в UTF-8, а Excel читает его как 1251 (или наоборот) — каждый байт трактуется не по той таблице, и кириллица превращается в кракозябры. Латиница и цифры при этом выживают — поэтому файл выглядит «наполовину битым».

Способ 1. Блокнот

Самый быстрый для одного файла:

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

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

Способ 2. Импорт в Excel с выбором кодировки

«Данные» → «Получить данные» → «Из текстового/CSV-файла» → в предпросмотре выберите «Кодировка файла» (65001 = UTF-8, 1251 = Cyrillic Windows). Excel покажет результат до загрузки. Способ читает файл правильно, но не перекодирует его — файл на диске остаётся в старой кодировке.

Способ 3. Конвертер

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

CSV в чужой кодировке, правильно прочитанный конвертером
Кодировка определена автоматически — кириллица на месте
Экспорт в XLSX или CSV UTF-8
На выходе — XLSX (без кодировок в принципе) или CSV в UTF-8

Конвертер сам определяет UTF-8, Windows-1251 и UTF-16 — на шаге структуры видно, какая кодировка опознана. На выходе либо XLSX, где понятия кодировки нет вовсе, либо CSV в UTF-8 с BOM — его и Excel открывает корректно, и системы понимают.

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

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

Три невидимых байта в начале файла, которые говорят «я в UTF-8». Excel по умолчанию смотрит на них: файл UTF-8 без BOM русский Excel может прочитать как 1251 — и снова кракозябры. UTF-8 с BOM решает это.

Как понять, в какой кодировке файл?

Откройте в «Блокноте» и посмотрите на кириллицу: читается — значит, блокнот угадал, и внизу окна видно, какую кодировку он определил. Не читается — попробуйте сохранить в другой и посмотрите снова.

После перекодировки часть текста пропала

Так бывает, если файл был в экзотической кодировке (не UTF-8 и не 1251) и часть символов в неё не влезала. Источник проблемы — на стороне того, кто выгрузил файл; просите выгрузку в UTF-8.

А разделитель при этом при чём?

Ни при чём, но беды ходят парой: файл с запятыми-разделителями часто и в UTF-8 без BOM. Если у вас и кракозябры, и один столбец — читайте ещё статью про разделители в CSV.