Инструменты · Работа с текстом

Кракозябры в тексте: как исправить кодировку файла

Открыли текстовый файл, CSV или веб-страницу — а вместо русских букв «Ð¿Ñ€Ð¸Ð²ÐµÑ‚», «привет» или ряды квадратиков и вопросительных знаков. Это не порча данных, а несовпадение кодировок: программа читает файл не в той таблице символов, в которой он сохранён. Разбираем, как определить настоящую кодировку и вернуть читаемый текст — в Notepad++, Word, Excel, онлайн и из командной строки.

Обновлено: 3 июля 2026 Редакция Loadfile Чтение 9 мин
Схема кодировки текста: упорядоченные и искажённые символьные плитки

Коротко: кракозябры появляются, когда файл читают в неправильной кодировке. Чаще всего это путаница между UTF-8 и Windows-1251 (CP1251). Откройте файл в Notepad++, посмотрите текущую кодировку в статус-баре и через меню «Кодировки» подберите ту, при которой текст станет читаемым, затем преобразуйте в «UTF-8 (без BOM)» и сохраните. Если символы искажены «в квадрате» (двойная перекодировка) или данные повреждены физически — простая смена кодировки не поможет, нужен исходный неиспорченный файл.

Содержание
  1. Что такое кодировка и почему появляются кракозябры
  2. Как определить кодировку файла
  3. Как исправить кодировку в Notepad++
  4. Кракозябры в Word, Excel и CSV
  5. Онлайн-перекодировка без установки программ
  6. Перекодировка в командной строке и коде
  7. BOM, ANSI и другие подводные камни
  8. Частые вопросы

Что такое кодировка и почему появляются кракозябры

Внутри любого файла текст хранится не буквами, а числами (байтами). Кодировка — это таблица соответствия «число ↔ символ». Чтобы показать текст, программа берёт байты и переводит их обратно в буквы по какой-то таблице. Если файл сохранён в одной таблице, а открыт в другой, каждый байт превращается «не в ту» букву — так и рождаются кракозябры.

Латинские буквы и цифры почти во всех таблицах совпадают (наследие ASCII), поэтому они обычно читаются нормально. Проблема возникает с кириллицей, буквами с диакритикой и спецсимволами — их коды в разных таблицах разные. Отсюда классические картины: «РџСЂРёРІРµС‚» вместо «Привет», «Ïðèâåò», сплошные вопросительные знаки «??????» или ряды пустых квадратов «□□□□».

Для русского текста практически всё сводится к четырём кодировкам:

КодировкаГде встречаетсяПризнак ошибки
UTF-8Современный стандарт: веб, Linux, macOS, JSON, XML, большинство новых файловОткрыт как CP1251 → «Ð¿Ñ€Ð¸Ð²ÐµÑ‚» (по 2 символа на букву)
Windows-1251 (CP1251, ANSI)Старые файлы и программы под Windows, часть выгрузок 1С, .bat, .txt из БлокнотаОткрыт как UTF-8 → квадраты «□» или «замещающий» символ
CP866 (DOS)Консольные утилиты, старые архивы, вывод командной строкиСмесь псевдографики и искажённой кириллицы
KOI8-RУстаревшая, письма и Unix-системы 1990–2000-хКириллица «переставлена» (е↔Е, зеркальная логика)

По самому виду кракозябр часто уже понятно, что произошло. Если вместо буквы стоит пара латинско-акцентных символов (Ð, Ñ, â, €) — почти наверняка это UTF-8, прочитанный как Windows-1251. Если видите одиночные квадраты или ромбики с вопросом «�» — наоборот, Windows-1251 (или CP866) прочитали как UTF-8.

💡
Главное правило диагностики

Кодировку нельзя «увидеть» в самом файле — её нигде не записано (кроме редкого BOM-маркера). Программа всегда лишь предполагает таблицу. Значит, задача — не «исправить файл», а подобрать правильную таблицу для чтения и один раз пересохранить в универсальной UTF-8.

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

Прежде чем перекодировать, нужно понять, в какой таблице файл сохранён на самом деле. Несколько надёжных способов:

  1. Notepad++. Откройте файл — внизу справа, в статус-баре, редактор показывает предполагаемую кодировку (например, «UTF-8» или «Windows-1251»). Это самый быстрый ориентир.
  2. Перебор в меню. Если текст нечитаем, поочерёдно переключайте кодировку в меню «Кодировки» → «Кириллица» (Windows-1251 / CP866 / KOI8-R) и «Кодировки» → «UTF-8». Та, при которой текст стал осмысленным, и есть верная.
  3. Браузер. Для HTML-страницы посмотрите тег <meta charset> в исходном коде — он обычно указывает кодировку страницы.
  4. Командная строка (Linux/macOS). Утилита file -i имя.txt или chardetect имя.txt покажут вероятную кодировку. Определение эвристическое, но для больших файлов надёжное.
!
Автоопределение — это догадка

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

Как исправить кодировку в Notepad++

Notepad++ — бесплатный редактор для Windows и самый удобный инструмент для ручного исправления кодировки. Важно не путать два пункта меню:

  • «Кодировки» → «Кодировать в…»переинтерпретировать те же байты в другой таблице. Используется, чтобы прочитать кракозябры правильно (данные на диске не меняются).
  • «Кодировки» → «Преобразовать в…» — реально перекодировать текст в новую таблицу и сохранить. Используется, чтобы записать файл в нужной кодировке.

Порядок действий, когда текст открылся кракозябрами:

  1. Откройте файл в Notepad++.
  2. Меню «Кодировки» → пробуйте пункты «Кодировать в Windows-1251», «Кодировать в UTF-8», «Кириллица (КОI8-R / OEM 866)», пока текст не станет читаемым. На этом шаге вы только правильно читаете файл.
  3. Когда текст стал нормальным, выберите «Кодировки»«Преобразовать в UTF-8 (без BOM)».
  4. Сохраните файл (Ctrl+S). Теперь он в универсальной кодировке и откроется корректно в любой современной программе.
Не сохраняйте, пока текст кракозябрится

Если нажать «Преобразовать в…» в момент, когда текст ещё нечитаем, вы запечёте искажение навсегда — получится двойная перекодировка, из которой вернуть данные почти невозможно. Сначала добейтесь читаемого вида через «Кодировать в…», и только потом преобразуйте и сохраняйте.

Тот же принцип работает в бесплатных редакторах VS Code (внизу справа кнопка кодировки → «Reopen with Encoding» / «Save with Encoding») и Sublime Text (меню File → Reopen with Encoding).

Кракозябры в Word, Excel и CSV

В офисных программах у проблемы своя специфика.

Word

Если документ .doc/.docx открывается иероглифами, чаще всего дело не в кодировке, а в том, что старый Word не понимает новый формат, либо файл повреждён. Включите в параметрах Word пункт «Подтверждать преобразование формата файла при открытии» — тогда при открытии появится окно выбора кодировки, где можно вручную указать «Кириллица (Windows)». Для простого текста, который Word открыл кракозябрами, помогает пересохранение через «Файл» → «Сохранить как» → «Обычный текст» с явным выбором кодировки. Подробнее о формате — на странице чем открыть DOCX.

Excel и CSV

Самый частый источник боли — CSV в кодировке UTF-8, открытый двойным кликом в Excel: русские колонки превращаются в кракозябры, потому что Excel в русской локали ждёт Windows-1251. Три рабочих решения:

  • Импорт вместо открытия. В Excel: «Данные» → «Получить данные» / «Из текста/CSV» → в окне мастера выберите кодировку «65001: Юникод (UTF-8)». Так Excel корректно разберёт и кодировку, и разделители.
  • Добавить BOM. Если файл открываете именно двойным кликом, пересохраните CSV как «UTF-8 с BOM» в Notepad++ — Excel по метке распознает UTF-8 автоматически.
  • Перекодировать в Windows-1251, если файл только для Excel и не уйдёт в веб-системы.

Разбор форматов таблиц и типовых ошибок импорта — в материале чем открыть CSV.

Онлайн-перекодировка без установки программ

Если ставить редактор не хочется, а задача разовая, кодировку можно поменять прямо в браузере. Онлайн-перекодировщики принимают файл, дают выбрать исходную и целевую кодировку (например, Windows-1251 → UTF-8) и возвращают исправленный файл. Это удобно для одного-двух документов.

!
Не загружайте конфиденциальное

Любой онлайн-сервис — это чужой сервер. Персональные данные, рабочие выгрузки, документы с коммерческой тайной перекодируйте локально (Notepad++, VS Code, командная строка). О рисках загрузки файлов на сторонние сервисы — в разделе безопасность файлов.

Готовые подборки сервисов для смены кодировки и конвертации между форматами мы собрали в гайде бесплатные онлайн-конвертеры файлов. Там же — конвертеры для случаев, когда «кракозябры» на самом деле означают, что вам подсунули не тот формат.

Перекодировка в командной строке и коде

Для пакетной обработки, серверов и автоматизации ручной редактор не годится — нужна командная строка или скрипт.

iconv (Linux, macOS, WSL)

Классическая утилита перекодировки. Перевести файл из Windows-1251 в UTF-8:

iconv -f CP1251 -t UTF-8 input.txt -o output.txt

Флаг -f — исходная кодировка (from), -t — целевая (to). Для пакетной обработки папки — цикл по файлам с тем же вызовом.

Python

Универсальный вариант для скриптов и кросс-платформенности:

# перекодировать из Windows-1251 в UTF-8 data = open("input.txt", encoding="cp1251").read() open("output.txt", "w", encoding="utf-8").write(data)

Если исходная кодировка неизвестна, помогает библиотека chardet: chardet.detect(raw_bytes) вернёт наиболее вероятную кодировку, которую затем можно подставить в чтение. Для типовых заготовок кода под такие задачи загляните в подборку шаблонов кода (boilerplate).

PowerShell (Windows)

Get-Content input.txt -Encoding Default | Set-Content output.txt -Encoding UTF8

Здесь Default — системная ANSI (обычно Windows-1251), результат сохраняется в UTF-8. Полезно, когда нужно причесать десятки файлов без установки стороннего софта.

BOM, ANSI и другие подводные камни

Несколько нюансов, из-за которых «правильная» перекодировка иногда всё равно даёт сбой.

  • BOM (Byte Order Mark). Невидимая метка в начале UTF-файла. Excel по ней распознаёт UTF-8, но многие серверные системы, .bat-файлы и парсеры от BOM спотыкаются (лишние символы в начале, сбой скриптов). Правило: для веба и кода — «UTF-8 без BOM»; для двойного клика по CSV в Excel — «UTF-8 с BOM».
  • «ANSI» — это не кодировка. В меню Windows «ANSI» означает системную кодировку по умолчанию, которая в русской локали и есть Windows-1251. На другом языке системы «ANSI» будет уже другой таблицей — поэтому файл, читаемый на одном ПК, кракозябрится на другом.
  • Двойная перекодировка. Если текст уже был сохранён в неправильной кодировке (искажение «запеклось»), простая смена таблицы не вернёт буквы — иногда помогает обратная цепочка (например, прочитать как Windows-1251, сохранить байты, затем интерпретировать как UTF-8), но надёжнее взять исходный неиспорченный файл.
  • Повреждённые данные ≠ кодировка. Если файл побился физически (обрыв загрузки, сбой диска, недокачанный архив), перекодирование бессмысленно — восстанавливать нужно сами данные из резервной копии или исходника.
  • Имена файлов в архивах. Кракозябры в названиях файлов внутри ZIP/RAR — отдельная проблема кодировки имён; открывайте такой архив архиватором с настройкой кодировки имён (7-Zip, WinRAR) — см. чем открыть RAR.
Как больше не сталкиваться с кракозябрами

Сохраняйте текст, CSV, JSON и XML в UTF-8 — это стандарт де-факто, который понимают веб, базы данных и все современные ОС. Проверяйте кодировку при выгрузках из старых систем и 1С. А для веб-страниц всегда указывайте <meta charset="UTF-8"> в начале документа.

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

Почему вместо русского текста появляются кракозябры?

Файл сохранён в одной кодировке, а программа читает его в другой. Каждый байт при этом переводится в «не ту» букву. Чаще всего это несовпадение UTF-8 и Windows-1251. Латинские буквы обычно читаются нормально, а кириллица искажается.

Что означают символы «Ð¿Ñ€Ð¸Ð²ÐµÑ‚» вместо «привет»?

Это UTF-8, прочитанный как Windows-1251: один русский символ UTF-8 занимает два байта, и каждый показывается отдельной латинско-акцентной буквой. Переключите чтение файла на UTF-8 — текст станет нормальным.

А если вместо текста квадратики «□□□□» или «?????»?

Обычно наоборот: файл в Windows-1251 (или CP866) открыт как UTF-8, и байты кириллицы не складываются в допустимые символы Юникода. Прочитайте файл в Windows-1251, затем преобразуйте в UTF-8.

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

Откройте в Notepad++ — он покажет предполагаемую кодировку в статус-баре. В Linux/macOS используйте команду file -i или утилиту chardet. Точный способ — перебрать кодировки и выбрать ту, при которой текст читается полностью без искажений.

Почему CSV с русскими данными открывается кракозябрами в Excel?

Файл сохранён в UTF-8, а Excel в русской локали при двойном клике ждёт Windows-1251. Импортируйте CSV через «Данные» → «Из текста/CSV» с выбором кодировки UTF-8, либо пересохраните файл как «UTF-8 с BOM».

Можно ли исправить кодировку, если текст уже сохранён кракозябрами?

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

В какой кодировке лучше сохранять файлы, чтобы избежать проблем?

UTF-8 (для веба и кода — без BOM). Это универсальный стандарт, который поддерживают все современные системы. Устаревшие Windows-1251, CP866 и KOI8-R стоит переводить в UTF-8 при первой возможности.

Читайте также