Konverze kódování souboru (Powershell)

Dnes jsem potřeboval překonvertovat pár souborů z kódové stránky Windows-1250 do něčeho rozumného (tedy do UTF-8 :)) a rozhodl jsem se napsat si na to nějaký skript v PowerShellu. Kupodivu se mi to v “čistém” Powershellu nepodařilo – pracuji totiž na US Windows (CP-1252) a nepodařilo se mi Powershellu vnutit jinou kódovou stránku. Ani příkaz chcp mi nepomohl.

Nakonec jsem z Powershellu prostě zavolal pár .NET metod a problém je vyřešen.

$encoding = [System.Text.Encoding]::GetEncoding($encodingCode)
$text = [System.IO.File]::ReadAllText($inputFile, $encoding)
[System.IO.File]::WriteAllText($outputFile, $text)

$inputFile a $outputFile obsahují názvy souborů (může jít i o jediný soubor) a $encodingCode je kódování zdrojového souboru (1250, v mém případě). Výstupní soubor je v defaultním kódování, což je právě UTF-8.