Как изменить кодировку в Excel: 5 способов устранить кракозябры в файлах CSV и TXT

Вы открыли файл CSV или TXT в Microsoft Excel, а вместо читаемого текста увидели набор непонятных символов — «кракозябры»? Проблема кроется в несовпадении кодировок. Excel по умолчанию использует ANSI (Windows-1251 для русского языка), тогда как современные файлы часто сохраняются в UTF-8. Эта статья поможет разобраться, как сменить кодировку в Excel при открытии и сохранении файлов, избежать потери данных и автоматизировать процесс для повторяющихся задач.

Мы рассмотрим не только стандартные методы через интерфейс программы, но и продвинутые решения: от редактирования реестра Windows до написания макросов на VBA. Особое внимание уделим типичным ошибкам — например, почему при сохранении в UTF-8 русские буквы превращаются в знаки вопроса, и как это исправить. Если вы работаете с большими объёмами данных или регулярно импортируете файлы из внешних систем (1С, базы данных, веб-скраппинг), эта инструкция сэкономит вам часы ручной правки.

Почему Excel неправильно отображает кодировку: 3 основные причины

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

  • 🔹 Несовпадение кодировок при открытии: Файл сохранён в UTF-8, а Excel пытается интерпретировать его как ANSI (или наоборот). Например, кириллические символы в UTF-8 занимают 2 байта, тогда как в Windows-1251 — 1 байт.
  • 🔹 Автоматическое определение форматов: Excel «угадывает» разделители и кодировку при импорте CSV, но часто ошибается. Особенно это заметно в файлах с смешанными данными (текст + числа).
  • 🔹 Ограничения старших версий Excel: В Excel 2010 и ниже поддержка UTF-8 реализована через дополнительные надстройки, тогда как в Excel 2016+ она встроена по умолчанию.

Интересный факт: даже если файл открылся корректно, при сохранении Excel может автоматически конвертировать кодировку в ANSI без предупреждения, что приведёт к потере данных при следующем открытии. Это особенно критично для файлов, которые позже загружаются в веб-системы или базы данных.

⚠️ Внимание: Если вы работаете с файлами, созданными на Mac, помните, что по умолчанию они сохраняются в кодировке UTF-8 с BOM (метка порядка байтов). Excel для Windows может некорректно интерпретировать этот маркер, добавляя в начало файла лишние символы.

Способ 1: Изменение кодировки при открытии файла (для CSV/TXT)

Самый простой метод — указать правильную кодировку в момент открытия файла. Вот пошаговая инструкция:

  1. Запустите Excel и перейдите в Файл → Открыть.
  2. Выберите нужный файл CSV или TXT, но не открывайте его двойным кликом.
  3. В выпадающем меню рядом с кнопкой «Открыть» выберите Параметры импорта текста (в новых версиях — Импорт данных).
  4. В окне Мастер текстов (разделители) на первом шаге выберите:
    • 📌 Формат файла: «С разделителями» (для CSV) или «Фиксированной ширины» (для TXT).
    • 📌 Кодировка: 65001: Unicode (UTF-8) или 1251: Кириллица (Windows).
  • Нажмите «Готово» — Excel откроет файл с корректным отображением символов.
  • Если вы не видите нужной кодировки в списке, значит ваша версия Excel её не поддерживает. В этом случае поможет предварительная конвертация файла в другом редакторе (например, Notepad++ или VS Code).

    Выбрать "Файл → Открыть" (не двойной клик)

    Указать тип файла "Текстовые файлы (.txt, .csv)"

    В мастере импорта выбрать UTF-8 (65001)

    Проверить разделители (запятая, точка с запятой, табуляция)

    Сохранить как новый файл с явным указанием кодировки-->

    Способ 2: Сохранение файла в нужной кодировке

    Чтобы избежать проблем при передаче файла коллегам или загрузке в другие системы, сохраняйте его с явным указанием кодировки. В Excel это делается так:

    1. Откройте файл и перейдите в Файл → Сохранить как.
    2. В поле «Тип файла» выберите Текстовые файлы (разделитель — табуляция) (.txt) или CSV (разделитель — запятая) (.csv).
    3. Нажмите «Сохранить» — появится окно с предупреждением о возможной потере форматирования. Здесь можно выбрать кодировку:
      • 🔘 ANSI — для совместимости со старыми системами (Windows-1251 для русского).
      • 🔘 Unicode (UTF-8) — для веб и кроссплатформенных решений.
      • 🔘 Unicode (UTF-16) — редко используется, но поддерживает все символы.

    Важно: если вы сохраняете файл в UTF-8, но в нём остаются кракозябры, проверьте настройки региональных стандартов Windows. Иногда проблема кроется в системных шрифтах, не поддерживающих юникод.

    Кодировка Поддержка кириллицы Совместимость Размер файла
    ANSI (Windows-1251) Да (только русский) Старые версии Excel, 1С Минимальный
    UTF-8 Да (все языки) Веб, базы данных, Mac/Linux Средний
    UTF-8 с BOM Да (все языки) Excel для Windows, Notepad Средний + 3 байта
    UTF-16 Да (все языки) Универсальная, но редко используется Увеличенный (x2)
    ⚠️ Внимание: При сохранении в UTF-8 из Excel 2010–2013 русские буквы могут заменяться на знаки вопроса. Это баг программы — используйте обходные пути (см. Способ 4).

    Способ 3: Конвертация кодировки через Power Query (Excel 2016+)

    Power Query — мощный инструмент для трансформации данных, встроенный в современные версии Excel. Он позволяет не только менять кодировку, но и очищать данные, объединять файлы и автоматизировать импорт. Вот как им пользоваться:

    1. Перейдите на вкладку Данные и выберите Получить данные → Из файла → Из текстового/CSV.
    2. Укажите путь к файлу и нажмите «Импорт». Откроется окно предварительного просмотра.
    3. В правой панели найдите раздел Файловый источник и измените параметр Кодировка на 65001 (UTF-8) или 1251 (Windows).
    4. Нажмите «Загрузить» — данные импортируются с корректной кодировкой.

    Преимущество этого метода — возможность создать повторяемый сценарий. Сохраните запрос, и при следующем импорте аналогичного файла Excel автоматически применит выбранные настройки.

    Способ 4: Решение проблемы с UTF-8 в Excel 2010–2013

    В старых версиях Excel поддержка UTF-8 реализована некорректно: при сохранении файла кириллические символы заменяются на ?. Вот два рабочих обходных пути:

    Метод 1: Сохранение через Notepad++

    1. Откройте файл в Excel и скопируйте все данные (Ctrl+A → Ctrl+C).
    2. Вставьте их в Notepad++ и сохраните с кодировкой UTF-8 без BOM.

    Метод 2: Использование VBA-макроса

    Добавьте в Excel следующий код (нажмите Alt+F11, затем Insert → Module):

    Sub SaveAsUTF8()
    

    Dim fs As Object, file As Object

    Set fs = CreateObject("ADODB.Stream")

    fs.Type = 2 'Текстовый формат

    fs.Charset = "utf-8"

    fs.Open

    fs.WriteText ActiveSheet.UsedRange.Value

    fs.SaveToFile "C:\путь\к\файлу.csv", 2 'Перезаписать если существует

    fs.Close

    End Sub

    Замените C:\путь\к\файлу.csv на актуальный путь. Этот макрос сохраняет данные в UTF-8 без потери символов.

    Excel 2010 или старше

    Excel 2013–2016

    Excel 2019–2021

    Excel 365 (подписка)

    Не знаю-->

    Способ 5: Автоматизация через реестр Windows (для опытных пользователей)

    Если вам регулярно приходится работать с файлами в UTF-8, можно настроить Excel на использование этой кодировки по умолчанию. Для этого потребуется отредактировать реестр Windows:

    1. Нажмите Win+R, введите regedit и подтвердите запуск.
    2. Перейдите по пути: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\<версия>\Excel\Options

      (замените <версия> на вашу, например, 16.0 для Excel 2016).

    3. Создайте новый DWORD (32-bit) параметр с именем DefaultCSVEncoding и значением 65001 (это код для UTF-8).
    4. Перезапустите Excel — теперь файлы CSV будут открываться в UTF-8 по умолчанию.
    ⚠️ Внимание: Неправильное редактирование реестра может привести к сбоям в работе системы. Перед изменениями создайте точку восстановления или резервную копию реестра.
    Что делать, если после изменений в реестре Excel перестал открываться?

    Откатите изменения через резервную копию реестра или воспользуйтесь функцией "Восстановление системы". Если проблема сохраняется, переустановите Microsoft Office с Repair-опцией.

    Продвинутые решения: VBA и внешние утилиты

    Для пользователей, работающих с большими объёмами данных, ручная смена кодировки неэффективна. Рассмотрим автоматизированные подходы:

    1. VBA-скрипт для пакетной конвертации

    Следующий макрос конвертирует все файлы CSV в папке из ANSI в UTF-8:

    Sub ConvertFolderToUTF8()
    

    Dim fso As Object, folder As Object, file As Object

    Dim path As String, content As String

    path = "C:\Ваша_папка\" 'Укажите путь к папке

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set folder = fso.GetFolder(path)

    For Each file In folder.Files

    If LCase(fso.GetExtensionName(file.Name)) = "csv" Then

    content = fso.OpenTextFile(file.Path, 1, False, -1).ReadAll 'Чтение как Unicode

    fso.CreateTextFile(file.Path & "_utf8.csv", True, True).Write content 'Сохранение в UTF-8

    End If

    Next file

    MsgBox "Конвертация завершена!", vbInformation

    End Sub

    2. Использование Python для конвертации

    Если у вас установлен Python, выполните в командной строке:

    pip install pandas
    

    python -c "import pandas as pd; pd.read_csv('input.csv', encoding='cp1251').to_csv('output.csv', encoding='utf-8', index=False)"

    3. Утилита iconv (для Linux/Mac или через WSL в Windows)

    Команда для конвертации:

    iconv -f WINDOWS-1251 -t UTF-8 input.csv > output.csv

    FAQ: Частые вопросы о кодировке в Excel

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

    Это происходит из-за несовпадения кодировки файла и ожидаемой Excel кодировки. Например, файл сохранён в UTF-8, а Excel пытается прочитать его как ANSI. Решение: при открытии файла явно укажите кодировку 65001 (UTF-8) в мастере импорта текста.

    Как сохранить файл в Excel так, чтобы кириллица отображалась нормально в 1С?

    Для совместимости с 1С сохраняйте файл в кодировке Windows-1251 (ANSI). В мастере сохранения выберите «Текстовые файлы (разделитель — табуляция)» и укажите кодировку 1251. Альтернатива — экспорт через Power Query с явным указанием кодировки.

    Можно ли в Excel 2007 открыть файл в UTF-8?

    В Excel 2007 нет встроенной поддержки UTF-8. Обходные пути:

    1. Открыть файл в Notepad++, конвертировать в ANSI и сохранить.
    2. Использовать надстройку UTF-8 CSV Importer (доступна для скачивания на официальных форумах Microsoft).
    Почему после сохранения в UTF-8 файл становится больше по размеру?

    Кодировка UTF-8 использует 1 байт для латинских символов и 2 байта для кириллицы, тогда как ANSI (Windows-1251) использует 1 байт для всех символов. Поэтому файлы с русским текстом в UTF-8 занимают на 30–50% больше места.

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

    Используйте специализированные утилиты:

    • 🔹 Notepad++: Откройте файл и посмотрите кодировку в строке состояния.
    • 🔹 VS Code: Кодировка отображается в правом нижнем углу.
    • 🔹 Командная строка (Windows): chcp (показывает текущую кодировку консоли), затем type файл.csv.