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

Обновлено: 06.07.2024

Кодировка текста – это схема нумерации символов, в которой каждому символу, цифре или знаку присвоено соответствующее число. Кодировку используют для сохранения и обработки текста на компьютере. Каждый раз при сохранении текста в файл он сохраняется с использованием определенной схемы кодирования, и при открытии этого файла необходимо использовать такую же схему, иначе восстановить исходный текст не получится. Самыми популярными кодировками для кириллицы сейчас являются UTF-8, Windows-1251 (CP1251, ANSI).

Для того чтобы программа смогла правильно открыть текстовый файл, иногда приходится вручную менять кодировку, перекодируя текст из одной схемы в другую. Например, не редко возникают проблемы с открытием файлов CSV, XML, SQL, TXT, PHP.

В этой небольшой статье мы расскажем о том, как изменить кодировку текстового файла на UTF-8, Windows-1251 или любую другую.

Блокнот Windows

Если вы используете операционную систему Windows 10 или Windows 11, то вы можете изменить кодировку текста с помощью стандартной программы Блокнот. Для этого нужно открыть текстовый файл с помощью Блокнота и воспользоваться меню « Файл – Сохранить как ».

меню Файл – Сохранить как

В открывшемся окне нужно указать новое название для файла, выбрать подходящую кодировку и нажать на кнопку « Сохранить ».

изменить кодировку в Блокноте

К сожалению, для подобных задач программа Блокнот часто не подходит. С ее помощью нельзя открывать документы большого размера, и она не поддерживает многие кодировки. Например, с помощью Блокнота нельзя открыть текстовые файлы в DOS 866.

Notepad++

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

Для того чтобы изменить кодировку текста с помощью Notepad++ файл нужно открыть в данной программе. Если программа не смогла правильно определить схему кодирования текста, то это можно сделать вручную. Для этого нужно открыть меню « Кодировки – Кириллица » и выбрать нужный вариант.

выбрать кодировку в Notepad++

После открытия текста можно изменить его кодировку. Для этого нужно открыть меню « Кодировки » и выбрать один из вариантов преобразования. Notepad++ позволяет изменить текущую кодировку текста на ANSI (Windows-1251), UTF-8, UTF-8 BOM, UTF-8 BE BOM, UTF-8 LE BOM.

изменить кодировку в Notepad++

После преобразования файл нужно сохранить с помощью меню « Файл – Сохранить » или комбинации клавиш Ctrl-S.

Akelpad

Akelpad (скачать) – достаточно старая программа для работы с текстовыми файлами, которая все еще актуальна и может быть полезной. Фактически Akelpad является более продвинутой версией стандартной программы Блокнот из Windows. С его помощью можно открывать текстовые файлы большого размера, которые не открываются в Блокноте, выполнять поиск и замену с использованием регулярных выражений и менять кодировку текста.

Для того чтобы изменить кодировку текста с помощью Akelpad файл нужно открыть в данной программе. Если после открытия файла текст не читается, то нужно воспользоваться меню « Файл – Открыть ».

открыть файл в Akelpad

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

выбрать кодировку в Akelpad

Для того чтобы изменить текущую кодировку текста нужно воспользоваться меню « Файл – Сохранить как » и сохранить документ с указанием новой схемы кодирования.

изменить кодировку в Akelpad

В отличие от Notepad++, текстовый редактор Akelpad позволяет сохранить файл в практически любой кодировке. В частности, доступны Windows 1251, DOS 886, UTF-8 и многие другие.

При использовании VS Code для создания и редактирования сценариев PowerShell очень важно, чтобы ваши файлы сохранялись в правильной кодировке символов.

Что такое кодировка и почему она важна?

VS Code управляет интерфейсом ввода строки символов в буфер пользователем и чтения-записи блоков байтов в файловой системе. При сохранении файла в VS Code используется кодирование текста для определения того, какие байты получит каждый символ. Подробные сведения см. в статье О шифровании символов.

Аналогичным образом, когда оболочка PowerShell запускает скрипт, ей необходимо преобразовать байты из файла в символы для преобразования файла в программу PowerShell. Так как VS Code записывает файл, а PowerShell считывает файл, этим средствам необходимо использовать одну и ту же систему кодировки. Этот процесс синтаксического анализа скрипта PowerShell идет так: байты -> символы -> лексемы -> дерево абстрактного синтаксиса -> выполнение.

И VS Code, и PowerShell устанавливаются с подходящей конфигурацией кодировки по умолчанию. Тем не менее кодировка по умолчанию, используемая PowerShell, была изменена с выпуском PowerShell 6. Чтобы избежать проблем с PowerShell и расширениями PowerShell в VS Code, необходимо настроить параметры VS Code и PowerShell должным образом.

Распространенные причины проблемы с кодировкой

Проблемы с кодировкой возникают, если кодировка VS Code в целом или вашего файла скрипта не совпадает с кодировкой, ожидаемой в PowerShell. В PowerShell нет способа автоматически определить кодировку файла.

Проблемы с кодировкой более вероятны при использовании символов не из 7-разрядной кодировки ASCII. Пример:

  • Расширенные небуквенные символы, такие как длинное тире ( — ), неразрывный пробел ( ) или левая двойная кавычка ( " ).
  • Латинские символы с диакритикой ( É , ü )
  • Нелатинские символы, такие как кириллица ( Д , Ц )
  • Символы иероглифического письма ( 本 , 화 , が ).

Распространенные причины проблем с кодировкой:

  • Параметры кодировок по умолчанию VS Code и PowerShell не были изменены. В версиях до PowerShell 5.1 (включительно) кодировка по умолчанию отличается от используемой в VS Code.
  • Открыт другой редактор, и файл перезаписан в новой кодировке. Это часто происходит с интегрированной средой сценариев.
  • Файл возвращается в систему управления версиями в кодировке, отличающейся от той, которая ожидается в VS Code или PowerShell. Это может произойти, когда участники совместной работы используют редакторы с различными конфигурациями кодировок.

Как определить наличие проблемы с кодировкой

Часто ошибки кодирования в скриптах представляются как ошибки синтаксического анализа. Если вы видите странные последовательности символов в скрипте, это может быть проблемой. В примере ниже тире ( – ) отображается в виде символов â€" :

Эта проблема возникает, так как VS Code кодирует символ – в UTF-8 как байты 0xE2 0x80 0x93 . Если эти байты декодируются в кодировке Windows-1252, они интерпретируются как символы â€" .

Некоторые странные последовательности символов, которые можно видеть:

  • â€" вместо – .
  • â€" вместо — .
  • Ä2 вместо Ä .
  • Â вместо (неразрывный пробел);
  • é вместо é .

Этот удобный справочник перечисляет распространенные шаблоны, которые указывают на проблему между кодировками UTF-8 и Windows-1252.

Взаимодействие расширения PowerShell для VS Code с кодировками

Расширение PowerShell взаимодействует со скриптами несколькими способами:

  1. При изменении скриптов в VS Code содержимое отправляется из VS Code в расширение. Протокол языкового сервера требует, чтобы это содержимое передавалось в UTF-8. Таким образом, расширение не сможет получить неправильную кодировку.
  2. При выполнении скриптов в интегрированной консоли они считываются оболочкой PowerShell непосредственно из файла. Если кодировка PowerShell отличается от кодировки VS Code, может произойти сбой.
  3. Когда скрипт, который открыт в VS Code, ссылается на другой скрипт, который не был открыт в VS Code, расширение загружает содержимое второго скрипта из файловой системы. Расширение PowerShell по умолчанию использует кодировку UTF-8, но при этом применяет обнаружение метки порядка байтов (BOM), чтобы выбрать правильную кодировку.

Проблема возникает при предположении кодировки, не использующей BOM (такой как UTF-8 без метки порядка байтов или Windows-1252). Расширение PowerShell по умолчанию использует UTF-8. Расширение не может изменить параметры кодировки в VS Code. Дополнительные сведения см. в разделе Проблема № 824.

Выбор подходящей кодировки

Различные системы и приложения могут использовать различные кодировки:

Кодировки Юникода также используют понятие метки порядка следования байтов (BOM). BOM ставится в начале текста, чтобы декодер мог определить, какая кодировка используется в тексте. Для многобайтовых кодировок BOM также указывает порядок следования байтов кодировки. BOM представляются байтами, которые редко встречаются в тексте в Юникоде. Это позволяет сделать обоснованное предположение, что текст записан в Юникоде, если присутствует метка BOM.

BOM не являются обязательными; в мире Linux они не так популярны, поскольку во всех прочих местах используется надежное соглашение UTF-8. Большинство приложений Linux предполагают, что текстовый ввод кодируется в UTF-8. Хотя многие приложения Linux могут распознавать и правильно обрабатывать BOM, некоторые этого не делают, что приводит к появлению артефактов в тексте, открываемом с помощью этих приложений.

Таким образом:

  • Если вы работаете в основном с приложениями Windows и Windows PowerShell, следует предпочтительно использовать такие кодировки, как UTF-8 с BOM или UTF-16.
  • Если вы работаете на разных платформах, следует отдавать предпочтение UTF-8 с BOM.
  • Если вы работаете главным образом в контексте Linux, следует отдавать предпочтение UTF-8 без BOM.
  • Windows-1252 и latin-1 — устаревшие кодировки, которых по возможности следует избегать. Тем не менее некоторые приложения предыдущих версий в Windows зависят от их.
  • Также стоит отметить, что подписывание скриптов зависит от кодировки, то есть изменение кодировки в подписанном скрипте потребует повторного подписывания.

Настройка VS Code

Кодировка VS Code по умолчанию — UTF-8 без метки порядка байтов.

Чтобы задать Кодировка в VS Code, перейдите к параметрам VS Code ( CTRL + , ) и задайте параметр "files.encoding" :

Возможны следующие значения:

  • utf8 : [UTF-8] без метки порядка байтов
  • utf8bom : [UTF-8] с меткой порядка байтов
  • utf16le : [UTF-16] с прямым порядком байтов
  • utf16be : [UTF-16] с обратным порядком байтов
  • windows1252 : [Windows-1252]

Должен отобразиться раскрывающийся список представления графического пользовательского интерфейса или дополнение в представлении JSON.

Чтобы обеспечить автоматическое определение кодировки, если это возможно, можно также добавить следующее:

Если вы не хотите, чтобы эти параметры влияли на все типы файлов, в VS Code можно задавать конфигурации для каждого языка отдельно. Создать параметр для конкретного языка можно, поместив параметры в поле [<language-name>] . Пример:

Вы также можете установить средство отслеживания Gremlins для Visual Studio Code. Это расширение раскрывает определенные символы Юникода, которые могут быть легко повреждены из-за своей невидимости или схожести с другими обычными символами.

Настройка PowerShell

В PowerShell кодировка по умолчанию зависит от версии:

  • В PowerShell 6+ кодировка по умолчанию на всех платформах — UTF-8 без метки порядка байтов.
  • В Windows PowerShell кодировка по умолчанию — обычно Windows-1252, расширение latin-1, которое также называется ISO 8859-1.

В PowerShell 5 + можно определить кодировку по умолчанию так:

Следующий скрипт может использоваться для определения кодировки, которую ваш сеанс PowerShell выводит для скрипта, где нет метки порядка байтов.

Можно настроить PowerShell так, чтобы использовать заданную кодировку в более общем виде с помощью параметров профиля. См. следующие статьи:

Заставить PowerShell использовать конкретную кодировку для входных данных невозможно. В PowerShell 5.1 и более ранних версий в Windows с языковым стандартом en-US по умолчанию используется кодировка Windows-1252, если отсутствует метка порядка байтов. Другие параметры языкового стандарта могут использовать другую кодировку. Для обеспечения совместимости лучше сохранять скрипты в Юникоде с меткой порядка байтов.

Любые другие имеющиеся у вас инструменты для работы со скриптами PowerShell могут зависеть от выбранных параметров кодировки или преобразовывать скрипты в другую кодировку.

Существующие скрипты

Скрипты, которые уже находятся в файловой системе, могут нуждаться в повторном кодировании в указанную вами кодировку. В нижней строке VS Code вы увидите метку UTF-8. Щелкните ее, чтобы открыть панель действий, и выберите команду Сохранить с кодировкой. Теперь вы можете выбрать новую кодировку для этого файла. Подробные инструкции см. в разделе Кодировка в VS Code.

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

Интегрированная среда сценариев (ISE) PowerShell

При редактировании скриптов с помощью интегрированной среды сценариев PowerShell необходимо синхронизировать здесь параметры кодировки.

Интегрированная среда сценариев должна учитывать метку порядка байтов, но можно также использовать отражение для задания кодировки. Обратите внимание, что это значение не сохраняется между запусками.

Система управления версиями

Некоторые системы управления версиями, например git, игнорируют кодировки; git отслеживает только байты. Поведение других, например Azure DevOps или Mercurial, может отличаться. Даже некоторые средства, основанные на git, полагаются на декодирование текста.

Если это так, убедитесь, что вы:

  • Настроили кодировку в системе управления версиями в соответствии с вашей конфигурацией VS Code.
  • Сделали так, что все файлы добавляются в систему управления версиями в соответствующей кодировке.
  • Остерегайтесь изменять кодировки, полученные через систему управления версиями. Ключевым признаком здесь будет разностный файл, который указывает, что изменения отсутствуют (так как изменены байты, но не символы).

Среды других участников

Настроив систему управления версиями, убедитесь также, что параметры других участников, работающих над теми файлами, к которым вы предоставляете общий доступ, не переопределяют кодировку путем повторного кодирования файлов PowerShell.

Другие программы

Все другие программы, которые считывают или записывают скрипты PowerShell, могут перекодировать их.

  • Использование буфера обмена для копирования и вставки скрипта. Такое часто встречается в следующих случаях:
    • Копирование скрипта в виртуальную машину.
    • Копирование скрипта из электронной почты или с веб-страницы.
    • Копирование скрипта через документ Microsoft Word или PowerPoint.
    • Блокнот;
    • vim;
    • любой другой редактор скриптов PowerShell.
    • Get-Content / Set-Content / Out-File
    • Операторы перенаправления PowerShell, такие как > и >> .
    • sed / awk
    • Веб-браузер при скачивании скриптов.
    • Общий файловый ресурс.

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

    Другие ресурсы о кодировках в PowerShell

    Существует несколько других достойных публикаций на тему кодировок и настройки кодирования в PowerShell:

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

    Иногда я с ностальгией и каким-то тёплым трепетом вспоминаю времена, которые, казалось, навсегда канули в лету. Времена, когда при включении компьютер спрашивал дату и время. Времена, когда на одну дискету помещалась операционная система, файловый менеджер и несколько игр, а цветной монитор даже с 16 цветами и соответствующей видеокартой оставался недостижимой мечтой. Характерной чертой вплоть до середины 90-х оставалась невозможность использовать кириллицу в именах файлов, папок, в командах. Да в общем-то нигде, кроме, разве что, содержимого файлов. Там можно было печатать по-русски, но и то это требовало дополнительной настройки и специальной программы.

    Я рад, что застал эти времена. Рад, что до сих пор у меня в путях и именах "технических" файлов почти нет кириллических символов. Но сейчас это скорее привычка, чем необходимость. Я уже лет 15 не сталкивался с программами, предназначенными для широкого круга пользователей и не понимающих символы, отличные от основной латиницы и эта статья никогда бы не появилась, если бы не всплеск проектов на блокчейне. Проектов, среди которых встречаются интересные ещё не законченные со своими нюансами, в том числе и таким неприятным.

    Установив клиент одного из таких проектов я приготовился исследовать его, тем более, это вознаграждалось и был очень быстро огорчён. Ошибки, как из рога изобилия просили меня связаться с разработчиками почти никогда не объясняя суть ошибки. Хотя в одной конкретной ситуации причина была указана - несовпадение кодировок.

    Далее непосредственно решение проблемы

    Начиная с Windows 2000 professional для обычных пользователей стала доступна файловая система NTFS, с которой профессионалы работали на тот момент уже давно. В ней среди функций, к которым как правило мало описания присутствует возможность для одного файла или папки назначать несколько имён .

    Вы не найдёте эту функцию ни в проводнике, ни где-либо ещё в стандартных программах, кроме разве что командной строки, поэтому для удобства нужно будет скачать дополнительную программу, но если вы освоитесь в жёстких и символических ссылках, то сможете не только решить описываемую проблему, но и легко перенести на другой диск папки, которые по-умолчанию не предлагают выбора пути, например огромный массив блоков Etherium или ту же папку "Мои документы", если она у вас достаточно велика. Ведь места на диске C как правило немного.

    Есть несколько программ для создания жёстких и символических ссылок. Я лично использую Total commander с нужным плагином, но здесь мы рассмотрим более простую альтернативу - Junction Link Magic . Если же кто-то захочет поэкспериментировать, то может найти самостоятельно другую утилиту. Некоторые из них были освещены в статье на Гигтаймс .

    При запуске Junction Link Magic предложит сканировать компьютер на предмет уже существующих жёстких и символических ссылок и точек монтирования. Если согласитесь, то вы увидите, насколько много их уже на вашем компьютере. Да, сама Microsoft пользуется такими обходными манёврами для совместимости со старыми программами

    Обратите внимание на кнопку "Remove". Эта кнопка удаляет ссылку. НИКОГДА НЕ УДАЛЯЙТЕ ССЫЛКИ, КОТОРЫЕ СОЗДАЛИ НЕ ЛИЧНО ВЫ - это может привести к серьёзным проблемам в операционной системе.

    Нажимаем Create. и открывается диалог создания ссылки

    Слева выбираете папку, которая превратиться в ссылку, а справа настоящую папку.

    Для каждой ссылки в левом окне создавайте отдельную папку! Не используйте существующие . Указав на папку C:\Пользователи\Вася справа и на вновь созданную папку D:\vasya нажимаем Create и получаем результат - оба пути - это одно и тоже.
    Внизу слева есть кнопка New folder, которая создаёт новую папку, но после создания она не отображается в диалоге (возможно это только у меня), поэтому лучше приготовиться заранее и создать нужные папки вручную

    На этом всё. Перед экспериментами обязательно создайте точку восстановления системы. Это никогда не повредит.

    1. Версия Windows.
    2. Что нужно (пдробно опиши)?
    3. Чего так много смайликов?

    Когда имена файлов в другой кодировке, то их имена крякозяблами. Нужно от этого избавиться. Файлов много. То есть, руками этого не сделать. Очень муторно.

    Видел текст с крякозяблами? Ну а это то же самое, но с именами файлов и папок.

    1. В папке с файлами в командной строке:
    dir /b > list1.txt

    2. Полученный текстовый файл list1.txt перевести в нужную кодировку и сохранить как list2.txt. Перекодировщиков много.

    4. Сохранить полученный файл с расширением .bat и запустить в командной строке.


    Добавлено:
    Не прокатит, если в именах есть пробелы.

    ren "строка1 из list1" "строка1 из list2"
    ren "строка2 из list1" "строка2 из list2"

    момент интересный.
    если скопировать такое кривое имя в редактор: который умеет перекодировать текст, то все будет ок.

    если же, в консоли (cmd.exe) вывод кинуть в текстовый файл, то такой текстовый файл уже не перекодировать.

    исходная кодировка иникод UTF-8. виндовс никак не хочет понять ее через консоль.

    Для меня это странно. Я считал, что виндовс имеет, как говорят, эту самую сквозную уникодность. консоль гонит код в DOS кодировку и если чего не понимает, то такой код - пиши пропало, вообще.

    Там несколько программ упоминаются, может, подойдет какая.

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

    кстати, какой аналог униховой команде "cat", в cmd?
    в справке висты, вообще, ничего не нашел по этой консольке.
    одни темы:
    как открыть команд промт?
    зачем открывать команд промт?
    а что такое команд промт?
    вы ли открываете команд промт?

    Я уже начинаю думать. А что это? А команд промт ли это?! А как мне может помочь команд промт? А я ли это?

    фиг с ней. поставлю Linux, скопирую в него нужные файлы и перекодирую. иначе с ума сойду.

    Но, все равно, спасибо. Я все понимаю. Это же не униховая ось. Тут уже о таких мелочах никто из разработчиков и не думает. Все ручками, если что.
    цигвин, с этой локалью, думаю, тоже ничего не поймет.

    copy /b file1 + file2 file3
    результат: file3 = file1 + file2

    copy /b file1 + file2 + file3 + . + fileN fileOUT
    результат: fileOUT = сумма всех file1..fileN
    Ограничение: полная длина ком. строки <= 255 (вроде бы, точно не помню ) символов. Плюсы можно ставить без пробелов.

    Вывод на экран: type file

    Чем-то похоже на "векторный фидонет" Медведева ))))

    Надо будет запомнить )

    Что такое "koi-8 раздел", что-то Unix-овское?

    Ага Russian partition table с медведЯми По улицам.. ))

    Google не находит такую программку, можно ссылку?

    Надо будет попробовать.

    Автору названия, сказанного здесь, Спасибо за информацию И полезно и прикольно

    Просто "file renamer"-ов огромное количество. Ты найди именно "nova file renamer"

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