Почему Excel неправильно отображает текст и как это исправить
Вы открыли файл CSV или TXT в Microsoft Excel, а вместо читаемого текста видите набор странных символов — "кракозябры"? Проблема кроется в несовпадении кодировок. Excel по умолчанию использует кодировку UTF-8 или Windows-1251, но если файл сохранён в другой (например, KOI8-R или ISO 8859-5), программа не может корректно интерпретировать символы.
Эта проблема особенно актуальна при работе с:
- 📄 Файлами, экспортированными из 1С, MySQL или других баз данных
- 📊 Данными, полученными от контрагентов или государственных порталов (например, выписки из ФНС)
- 🌍 Текстами на кириллице, созданными в старых версиях Windows (95/98/ME)
- 📱 Файлами, переданными с MacOS или Linux-систем
В этой статье вы узнаете, как изменить кодировку при открытии файла, сохранить документ в нужной кодировке, а также что делать, если Excel упорно не хочет распознавать текст. Мы рассмотрим решения для Excel 2010–2019 и Microsoft 365, включая скрытые функции импорта данных.
Способ 1: Изменение кодировки при открытии файла (самый надёжный)
Если файл ещё не открыт или вы готовы повторить попытку, используйте мастер импорта текста. Это единственный способ, который гарантированно сработает даже с самыми "упрямыми" CSV/TXT.
- Закройте файл в Excel (если он открыт).
- Перейдите в
Файл → Открыть(или нажмитеCtrl+O). - Выберите нужный файл, но вместо двойного клика нажмите на стрелку рядом с кнопкой
Открытьи выберитеОткрыть и восстановить(если доступно) илиОткрыть как копию. - В окне предварительного просмотра кликните
Импорт данных(в старых версиях —Мастер текстов (импорт)).
Далее следуйте пошаговой инструкции:
- На 1-м шаге мастера выберите
С разделителями(для CSV) илиФиксированная ширина(для TXT). НажмитеДалее. - На 2-м шаге в выпадающем списке
Формат файлапопробуйте разные кодировки:- 🔹
Windows (1251)— для большинства русских файлов - 🔹
UTF-8— универсальный стандарт - 🔹
DOS (866)— для старых систем - 🔹
KOI8-R— для файлов с Unix-систем
- 🔹
Далее и завершите импорт.Убедитесь, что буквы "ё", "Ё", "ъ" отображаются корректно|
Проверьте знаки препинания (кавычки, тире) — они не должны превращаться в "?"|
Сравните цифры с разделителями (1 000 vs 1000)|
Прокрутите файл до конца — иногда кодировка "сбивается" в середине-->
Важно: Если ни одна кодировка не подходит, попробуйте открыть файл в Блокноте (Notepad), а затем скопировать текст в Excel вручную. Иногда это помогает с редкими кодировками вроде Mac Cyrillic.
Способ 2: Сохранение файла в другой кодировке
Если файл уже открыт, но отображается некорректно, можно сохранить его в другой кодировке. Этот метод работает, только если изначально текст был распознан хотя бы частично.
- Перейдите в
Файл → Сохранить как. - В выпадающем списке
Тип файлавыберитеТекстовый файл (с разделителями табуляции) (.txt)илиCSV (разделители — запятые) (.csv). - Нажмите кнопку
Сервис(илиПараметрыв новых версиях) →Кодировка веб-страницы. - Выберите одну из кодировок:
- 📌
Юникод (UTF-8)— универсальный вариант - 📌
Кириллица (Windows)— дляWindows-1251 - 📌
Другие кодировки→KOI8-RилиISO 8859-5
- 📌
Критическая деталь: при сохранении в UTF-8 Excel может добавить в начало файла метку BOM (байтовый порядок), которая ломает совместимость с некоторыми программами. Чтобы избежать этого, используйте Notepad++ или VS Code для повторного сохранения без BOM.
Способ 3: Использование Power Query для исправления кодировки
В Excel 2016 и новее есть мощный инструмент Power Query, который умеет автоматически определять и исправлять кодировку. Это особенно полезно для больших файлов или регулярного импорта данных.
- Перейдите на вкладку
Данные→Получить данные→Из файла→Из текста/CSV. - Выберите проблемный файл и нажмите
Импорт. - В окне предварительного просмотра Power Query в правом верхнем углу нажмите на выпадающий список
Кодировка файла. - Попробуйте варианты:
- 🔄
1251: Кириллица (Windows) - 🔄
65001: Unicode (UTF-8) - 🔄
866: Кириллица (DOS)
- 🔄
Преобразовать данные → Закрыть и загрузить.Преимущество Power Query в том, что он запоминает настройки: при следующем импорте файла с таким же именем кодировка применится автоматически.
Что делать, если Power Query не виден?
Если у вас Excel 2013 или старше, Power Query может быть отключён. Чтобы его активировать:
- Перейдите в
Файл → Параметры → Надстройки. - Внизу окна в выпадающем списке
УправлениевыберитеНадстройки COMи нажмитеПерейти. - Поставьте галочку напротив
Microsoft Power Query for Excelи нажмитеOK.
После перезапуска Excel вкладка Power Query появится на ленте.
Способ 4: Конвертация кодировки с помощью Блокнота или Notepad++
Если Excel упорно не хочет распознавать кодировку, можно воспользоваться внешними программами. Этот метод подходит для одноразовой конвертации файлов.
Вариант A: Стандартный Блокнот (Windows)
- Откройте файл в Блокноте (
Notepad). - Перейдите в
Файл → Сохранить как. - В выпадающем списке
КодировкавыберитеUTF-8илиANSI(этоWindows-1251). - Сохраните файл под новым именем (например,
файл_utf8.csv) и откройте его в Excel.
Вариант B: Notepad++ (для сложных случаев)
- Откройте файл в Notepad++.
- В меню выберите
Кодировки → Преобразовать в UTF-8 без BOMилиКодировки → Кириллица → Windows-1251. - Сохраните файл (
Ctrl+S). - 📝 Замените пути
C:\путь\к\вашему\файлу.csvиC:\путь\к\новому_файлу_utf8.csvна актуальные. - 🔧 Измените кодировки в строках
vbFromUnicode, 1251иvbUnicode, 65001(например, на866дляDOS). - 🖱️ Запустите макрос нажатием
F5.
Почему Notepad++ лучше? Он поддерживает KOI8-R, ISO 8859-5 и другие редкие кодировки, отсутствующие в стандартном Блокноте. Кроме того, в нём есть функция автоопределения кодировки (Кодировки → Определить кодировку).
Способ 5: Исправление кодировки через VBA-макрос
Для пользователей, которые часто сталкиваются с проблемами кодировки, можно создать макрос, автоматически преобразующий текст. Этот метод требует базовых знаний VBA, но экономит время в долгосрочной перспективе.
Вставьте этот код в редактор VBA (Alt+F11):
Sub ConvertEncoding()
Dim filePath As String
Dim content As String
Dim newContent As Byte()
Dim i As Integer
' Укажите путь к файлу
filePath = "C:\путь\к\вашему\файлу.csv"
' Чтение файла в бинарном режиме
Open filePath For Binary As #1
content = Space(LOF(1))
Get #1, , content
Close #1
' Преобразование из Windows-1251 в UTF-8
newContent = StrConv(content, vbFromUnicode, 1251)
newContent = StrConv(newContent, vbUnicode, 65001)
' Сохранение нового файла
Open "C:\путь\к\новому_файлу_utf8.csv" For Binary As #2
Put #2, , newContent
Close #2
MsgBox "Файл успешно преобразован!", vbInformation
End Sub
Чтобы адаптировать макрос под свою задачу:
Таблица совместимости кодировок в Excel
Чтобы не гадать, какую кодировку выбрать, воспользуйтесь этой таблицей. Она поможет подобрать правильный формат в зависимости от источника файла:
| Источник файла | Рекомендуемая кодировка | Альтернативные варианты | Примечания |
|---|---|---|---|
| 1С:Предприятие 8.x | Windows-1251 |
UTF-8, DOS-866 |
В новых версиях 1С используется UTF-8, но старые отчёты могут быть в 1251. |
| Госуслуги, ФНС, ПФР | Windows-1251 |
KOI8-R |
Файлы выписок часто приходят в 1251, но иногда — в KOI8-R. |
| MacOS или Linux | UTF-8 |
Mac Cyrillic |
Файлы с Mac могут содержать BOM, который ломает совместимость. |
| Старые версии Windows (95/98/ME) | DOS-866 |
Windows-1251 |
Для файлов, созданных в DOS-программах. |
| Базы данных (MySQL, PostgreSQL) | UTF-8 |
Windows-1251 |
Зависит от настроек сервера БД. |
Если ваш источник не указан в таблице, попробуйте UTF-8 — это универсальный стандарт, поддерживаемый большинством современных систем. Если не сработает — перебирайте варианты по порядку: Windows-1251 → DOS-866 → KOI8-R.
Частые ошибки и как их избежать
Даже опытные пользователи иногда допускают ошибки при работе с кодировками. Вот самые распространённые:
⚠️ Внимание: Никогда не используйте Сохранить как → Веб-страница (*.html) для конвертации кодировки. Excel добавит в файл ненужный HTML-код, который испортит данные.
Ошибка 1: Двойное преобразование
Если вы уже однажды конвертировали файл из Windows-1251 в UTF-8, а затем снова пытаетесь изменить кодировку, текст может стать нечитаемым. Решение: всегда работайте с оригинальным файлом.
Ошибка 2: Игнорирование BOM в UTF-8
Некоторые программы (например, 1С) не могут прочитать CSV с меткой BOM. Решение: сохраняйте файл как UTF-8 без BOM (например, в Notepad++).
⚠️ Внимание: При экспорте данных из Excel в CSV для загрузки на сайт (например, в WordPress или OpenCart) всегда используйте UTF-8 без BOM. Иначе могут возникнуть ошибки импорта.
Ошибка 3: Путаница с разделителями
В CSV-файлах разделителем может быть не только запятая, но и точка с запятой (;) или табуляция. Если Excel неправильно разбивает данные по столбцам, проверьте символ-разделитель в настройках импорта.
Ошибка 4: Редактирование файла в Word
Microsoft Word автоматически заменяет прямые кавычки (") на «ёлочки» (“ ”), что ломает структуру CSV. Решение: используйте только Блокнот или Excel.
FAQ: Ответы на частые вопросы
Почему в Excel вместо букв отображаются вопросительные знаки (?)?
Это означает, что программа не может распознать символ. Чаще всего проблема возникает при попытке открыть файл в UTF-8 как ANSI (или наоборот). Решение:
- Закройте файл.
- Откройте его через
Мастер импорта текста(см. Способ 1). - Попробуйте кодировки
UTF-8илиWindows-1251.
Если не помогает — файл мог быть повреждён при сохранении. Попробуйте восстановить его из резервной копии.
Как узнать, в какой кодировке сохранён файл?
Есть несколько способов:
- 🔍 Откройте файл в Notepad++ — кодировка отображается в строке состояния.
- 🔍 В Linux/MacOS используйте команду
file -i имя_файла.csv. - 🔍 Онлайн-сервисы вроде encoding.ru (загрузите файл для анализа).
Если файл большой, проверяйте кодировку по первым 10–20 строкам — иногда она меняется в середине документа.
Можно ли автоматизировать изменение кодировки для пакетной обработки файлов?
Да, для этого подойдут:
- 🤖 PowerShell-скрипты (пример:
Get-Content file.csv | Out-File -Encoding UTF8 file_utf8.csv) - 🤖 Python с библиотекой
chardetдля автоопределения кодировки. - 🤖 VBA-макросы (см. Способ 5).
Для регулярной обработки рекомендуем использовать Python — он гибко обрабатывает ошибки и поддерживает все возможные кодировки.
Почему после изменения кодировки пропадают русские буквы?
Это происходит из-за двойного преобразования. Например:
- Файл был в
Windows-1251, но вы сохранили его какUTF-8. - Затем вы снова открыли его в Excel, который интерпретировал
UTF-8какANSI.
Решение: всегда работайте с оригинальным файлом. Если он утерян — попробуйте открыть испорченный файл в Блокноте и вручную указать правильную кодировку при сохранении.
Как настроить Excel, чтобы он всегда открывал CSV в UTF-8?
К сожалению, в Excel нет встроенной настройки для этого. Но есть обходные пути:
- 🔧 Используйте Power Query (см. Способ 3) — он запоминает настройки кодировки для конкретных файлов.
- 🔧 Создайте шаблон VBA, который будет автоматически применять
UTF-8при открытии CSV. - 🔧 Настройте Notepad++ как программу по умолчанию для CSV, а затем конвертируйте кодировку перед открытием в Excel.