Blogbeitrag

28 | 05 | 2016

PowerShell Hack: UTF-8 ohne BOM ausgeben

Geschrieben von um 11:51 Uhr

Wenn man mit

'irgendein Text' | Out-File $outfile -Encoding UTF8

Text in eine Textdatei ausgibt, entsteht am Ende eine „UTF mit BOM“-Kodierung. Unix- und Linux-Programme, denen man die Datei dann verfüttern möchte, finden das oft nicht gut.

Abhilfe schafft der folgende Befehl:

$cnt = Get-Content $outfile #outfile = Pfad der Datei
[System.IO.File]::WriteAllLines($outfile, $cnt)

Natürlich darf der Hinweis nicht fehlen, dass die .NET-Methode um einiges schneller ist als Out-File. Der folgende Code zeigt es sehr eindrucksvoll:

'PowerShell-Methode:'
(Measure-Command {
    for ($i=1;$i-lt 10000;$i++) {
       "Auf dieser Zeile der Textdatei steht die Zahl $i" | Out-File c:\temp\test_out_ps.txt -Encoding utf8 -Append
    }
}).TotalSeconds

'.NET-Methode:'
(Measure-Command {
    for ($i=1;$i-lt 10000;$i++) {
        [System.IO.File]::AppendAllText('c:\temp\test_out_net.txt',"Auf dieser Zeile der Textdatei steht die Zahl $i`n",[System.Text.Encoding]::UTF8) 
    }
}).TotalSeconds

Auf meinem Rechner: PowerShell = 5,4 Sekunden, .NET = 1,6 Sekunden.

Beitragsdetails

Tags » , , «

gravatar

Kategorie » PowerShell «

Trackback: Trackback-URL |  Kommentar-Feed: RSS 2.0 | 163 Worte

Beitrag kommentieren

Kommentar schreiben ...

Deine E-Mail-Adresse wird nicht veröffentlicht.

(X)HTML Tags zur Formatierung der Kommentare

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>