Перекодировка текста с помощью команд PowerShell |
![]() |
Добавил(а) microsin |
Возникла необходимость быстро перекодировать файлы исходного кода из кодировки ANSI в кодировку UTF8. Быстрое решение нашел в посте [1]. Один файл можно перекодировать, запустив следующую команду PowerShell: get-content IN.txt | out-file -encoding ENC -filepath OUT.txt Здесь IN.txt и OUT.txt это имена входного и выходного файла соответственно, ENC это кодировка, в которую нужно перекодировать файл IN.txt. Для выходной кодировки UTF-8 вместо ENC надо подставить utf8. Кодировку ANSI входного файла указывать не надо, она определяется автоматически. В PowerShell 5,1 параметр encoding поддерживает следующие значения [2]: Ascii использует кодировку ASCII (7-разрядную). Чтобы перекодировать все файлы из каталога DIR1 и записать перекодированные файлы в каталог DIR2, используйте следующую команду: foreach($i in ls -name DIR1\*.*) { get-content $i | out-file -encoding utf8 -filepath DIR2\$i } Важный момент: чтобы команда foreach сработала правильно, необходимо в командной строке PowerShell установить текущий каталог DIR1. Например, если исходные файлы, которые надо перекодировать, находятся в каталоге D:\MyProject, то для смены текущего каталога предварительно выполните следующую команду: cd D:\MyProject
[Скрипт PowerWhell для перекодировки текста из ANSI в UTF8] # Скрипт для перекодировки файлов *.h и *.c из кодировки ANSI
# в кодировку UTF-8. Запуск скрипта:
# powershell -file ansi-to-UTF8.ps1 srcDIR dstDIR
# Каждый из файлов *.h и *.c в каталоге srcDIR будет перекодирован,
# и перекодированная копия будет записана в каталог dstDIR.
# Каталоги srcDIR и dstDIR должны существовать на диске.
param ($srcDIR, $dstDIR) foreach($i in ls -name $srcDIR\*.h) { Write-Output $i get-content $i | out-file -encoding utf8 -filepath $dstDIR/$i } foreach($i in ls -name $srcDIR\*.c) { Write-Output $i get-content $i | out-file -encoding utf8 -filepath $dstDIR/$i } [Ссылки] 1. Бесплатный конвертер ANSI в UTF8 site:poweruser.guru. |