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.