To może pracować dla Ciebie, ale zauważ, że będzie to chwycić każdy plik w bieżącym folderze:
Get-ChildItem | Foreach-Object { $c = (Get-Content $_); `
Set-Content -Encoding UTF8 $c -Path ($_.name + "u") }
samo używając aliasów dla zwięzłości:
gci | %{ $c = (gc $_); sc -Encoding UTF8 $c -Path ($_.name + "u") }
Steven Murawski sugeruje zamiast tego użyj Out-File
. Różnice między obydwoma cmdletami są następujące:
Out-File
spróbuje sformatować dane wejściowe, które otrzymuje. Domyślnym kodowaniem jest
Out-File
kodowanie Unicode, natomiast Set-Content
używa domyślnego systemu.
Oto przykład zakładając plik test.txt
nie istnieje w obu przypadkach:
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)
W rzeczywistości, jeśli nie potrzebują żadnego konkretnego kodowania Unicode, można równie dobrze zrobić następujące przekonwertować plik tekstowy Unicode:
PS> Get-Content sourceASCII.txt > targetUnicode.txt
Out-File
jest „operatorem przekierowania z optiona l parametry "sortów.
Duplikat http://stackoverflow.com/questions/64860/best-way-to-convert-text-files-between-character-sets i zobacz także http://stackoverflow.com/questions/76482/powershell -setting-encoding-for-get-content-pipeline –