Текст и данные · Инструкция
Как изменить кодировку файла в VS Code
Если русский текст открылся «кракозябрами», важно не спешить нажимать Save.
Короткий ответ
При неправильном отображении сначала нажмите индикатор кодировки в строке состояния и выберите Reopen with Encoding, найдя исходную кодировку. Только когда текст читается правильно, используйте Save with Encoding → UTF-8, если действительно хотите конвертировать файл.
Почему Reopen и Save решают разные задачи
Кодировка задаёт соответствие между байтами файла и символами. Если файл записан, например, не в UTF-8, а редактор прочитал его как UTF-8, на экране появляются неверные символы. В этом случае проблема существует уже на этапе чтения: сохранение с новой кодировкой может зафиксировать испорченный текст и сделать восстановление сложнее. Поэтому первый безопасный шаг — Reopen with Encoding. VS Code перечитывает исходные байты с выбранной таблицей символов, не пытаясь сначала преобразовать их. Когда кириллица, кавычки и специальные знаки выглядят правильно, можно решать, оставить исходную кодировку или сделать миграцию. Save with Encoding нужен именно для второго сценария: он берёт уже корректно отображаемый текст и записывает его в выбранном формате. Эти команды доступны через индикатор encoding в строке состояния, а глобальную или workspace-кодировку можно задавать настройкой `files.encoding`.
Важно: Если файл уже отображается неправильно, не делайте Save «на пробу». Сначала создайте копию или используйте систему контроля версий.
Безопасная последовательность смены кодировки
- Если файл под Git, убедитесь, что есть чистая исходная версия или сделайте резервную копию. Это защищает от необратимого сохранения испорченных символов.
- Откройте файл и нажмите текущую кодировку в строке состояния. Выберите Reopen with Encoding, а затем предполагаемую исходную кодировку.
- Проверьте не одну строку, а разные участки: кириллицу, длинное тире, кавычки, символы валют, комментарии и данные. Частично совпадающие таблицы могут маскировать ошибку.
- Если текст корректен и требуется перейти на UTF-8, снова нажмите индикатор кодировки, выберите Save with Encoding и нужный вариант UTF-8.
- Просмотрите Git diff. Нормальная перекодировка может затронуть представление байтов, но содержимое текста не должно превращаться в массовые замены символов или `�`.
- Если проект должен всегда открывать такие файлы одинаково, установите `files.encoding` на уровне Workspace или Folder, а не обязательно глобально для всех проектов.
Предупреждение: Не путайте UTF-8 и UTF-8 with BOM в системах, где BOM имеет значение. Следуйте требованиям проекта или потребителя файла.
Reopen with Encoding или Save with Encoding
- Текст уже отображается кракозябрами. Reopen with Encoding. Нужно правильно интерпретировать исходные байты
- Текст читается нормально, но формат файла надо изменить. Save with Encoding. Нужно записать символы в новой кодировке
- Все файлы проекта должны открываться одинаково. files.encoding в Workspace. Правило применяется при открытии файлов проекта
- Неизвестна исходная кодировка. Перебирать Reopen с копией файла. Сохранение до распознавания может повредить данные
Что делать, если неизвестно, в какой кодировке файл
Автоматическое угадывание кодировки не является математически точным: короткий ASCII-файл вообще не содержит достаточно информации, чтобы отличить многие варианты, а некоторые однобайтовые кодировки дают правдоподобный, но неверный текст. Поэтому ориентируйтесь на происхождение файла. Старые Windows-программы для русскоязычных данных часто использовали Windows-1251; старые Unix-системы могли использовать KOI8-R; современные проекты обычно стандартизируются на UTF-8. В VS Code можно включить auto guessing, но результат всё равно нужно проверять глазами на характерных символах. Хороший тест — найти слова с `ё`, кавычки, длинные тире, спецсимволы и смешанный русский/латинский текст. Если в файле бинарные данные или он был уже испорчен предыдущим сохранением, простая смена encoding не восстановит потерянные байты. Тогда безопаснее вернуться к исходной копии из Git, backup или источника выгрузки и повторить процедуру чтения с правильной кодировкой.
Совет: Кодировка — свойство байтов файла, а не «шрифт». Смена шрифта не исправляет неверно декодированный текст.
Как не устроить массовую перекодировку всего репозитория
Устанавливая `files.encoding` на уровне User, вы влияете на разные проекты, в том числе старые репозитории с особыми требованиями. Если правило относится только к одному workspace, храните его в настройках проекта или используйте конфигурацию инструментов сборки, которые создают эти файлы. Перед массовым преобразованием сначала перекодируйте один репрезентативный файл и прогоните тесты/сборку. Некоторые компиляторы, CSV-импортёры, legacy API и внешние устройства ожидают конкретную кодировку; «UTF-8 везде» обычно полезная цель, но она должна быть согласована с потребителем. Отдельно проверьте line endings: перекодировка и CRLF/LF — разные изменения, и их одновременная нормализация делает diff огромным. Лучше менять один параметр за раз, чтобы code review показывал понятную причину изменений и при необходимости можно было откатить только кодировку.
Важно: Если внешний сервис требует конкретную legacy-кодировку, не конвертируйте файл только ради удобства редактора — настройте корректное открытие.
Признаки успешной конвертации
- До сохранения текст корректно отображался после Reopen with Encoding.
- После Save with Encoding и повторного открытия символы не изменились.
- Git diff не содержит `�` и случайных замен кириллицы.
- Сборка/импортёр/внешняя система принимает файл.
- Правило кодировки задано в подходящем scope, а не навязано всем проектам.
Что учитывать
Кодировка задаёт соответствие между байтами файла и символами. Если файл записан, например, не в UTF-8, а редактор прочитал его как UTF-8, на экране появляются неверные символы. В этом случае проблема существует уже на этапе чтения: сохранение с новой кодировкой может зафиксировать испорченный текст и сделать восстановление сложнее. Поэтому первый безопасный шаг — Reopen with Encoding. VS Code перечитывает исходные байты с выбранной таблицей символов, не пытаясь сначала преобразовать их. Когда…
Источники и проверка
Фактическая часть сверена по первичным источникам (в т.ч. Basic editing). Пример и формулировки — редакция N1RO на 2026-09-20.