Это может работать для вас, но обратите внимание, что он будет захватывать каждый файл в текущей папке:
Get-ChildItem | Foreach-Object { $c = (Get-Content $_); `
Set-Content -Encoding UTF8 $c -Path ($_.name + "u") }
То же самое с помощью псевдонимов для краткости:
gci | %{ $c = (gc $_); sc -Encoding UTF8 $c -Path ($_.name + "u") }
Стивен Murawski наводит на мысль используя вместо этого Out-File
. Различия между двумя командными командами следующие:
Out-File
попытается отформатировать входной сигнал, который он получает.
Out-File
По умолчанию кодировка используется на основе Unicode, тогда как Set-Content
использует систему по умолчанию.
Вот пример предполагается, что файл test.txt
не существует в любом случае:
PS> [system.string] | Out-File test.txt
PS> Get-Content test.txt
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
# test.txt encoding is Unicode-based with BOM
PS> [system.string] | Set-Content test.txt
PS> Get-Content test.txt
System.String
# test.txt encoding is "ANSI" (Windows character set)
В самом деле, если вам не нужна какая-либо конкретная кодировка Unicode, можно также сделать следующее преобразовать текстовый файл в кодировке Unicode:
PS> Get-Content sourceASCII.txt > targetUnicode.txt
Out-File
является «перенаправление оператора с optiona l параметров ".
Дубликат http://stackoverflow.com/questions/64860/best-way-to-convert-text-files-between-character-sets, а также см. Http://stackoverflow.com/questions/76482/powershell -setting-encoding-for-get-content-pipe –