Программирование ARM Перекодировка текста с помощью команд PowerShell Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Перекодировка текста с помощью команд 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-разрядную).
BigEndianUnicode использует UTF-16 с обратным порядком байтов.
BigEndianUTF32 использует UTF-32 с обратным порядком байтов.
Byte кодирует набор символов в последовательность байтов.
Default использует кодировку, соответствующую активной кодовой странице Windows (обычно ANSI).
Oem использует кодировку, соответствующую текущей кодовой странице OEM Windows.
String аналогичен Unicode.
Unicode использует UTF-16 с прямым порядком байтов.
Unknown аналогичен Unicode.
UTF32 использует UTF-32 с прямым порядком байтов.
UTF7 использует UTF-7.
UTF8 использует UTF-8 (с BOM).

Чтобы перекодировать все файлы из каталога 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.
2. Кодировка символов в Windows PowerShell site:docs.microsoft.com.
3. Кракозябры вместо русского текста в Gitea.

 

Добавить комментарий


Защитный код
Обновить

Top of Page