2016-03-21 5 views
0

Das Ausführen dieses Befehls:Windows PowerShell-Ausgabe in Datei. Seltsame Charaktere

echo "foo" > test.txt 

ich seltsame Ergebnisse in test.txt. Ich kann nicht wirklich den Inhalt direkt hier im Stapelüberlauf kopieren und einfügen, sondern muss die hexadezimale Ausgabe der Datei anzeigen. Welche sieht aus wie this-

ff fe 66 00 6f 00 6f 00 0d 00 0a 00 

nicht sicher, was FF und FE sind, aber es sieht aus wie es auch NULL zwischen den einzelnen Zeichen setzen wird.

Können mir irgendwelche Windows-Leute in die richtige Richtung weisen, warum dies geschieht und wie ich es lösen kann? Ich will nur den Inhalt "foo" unbelästigt in diese Datei legen.

Antwort

4

0xFFFE ist die Unicode byte order mark für UTF-16 LE (Little Endian), die Windows Unicode ist normal.

Der Inhalt Ihrer Datei ist die zwei Byte Stückliste, 0x6600 ("f"), 0x6f00 ("o"), 0x6f00 ("o"), 0x0d00 ("r" oder Wagenrücklauf), 0x0a00 (" `n“ oder eine neue Zeile)

Versuchen:

echo "foo" | Out-File -FilePath test.txt -Encoding utf8 
+0

Ah ich sehe. Das sind also keine Nullen, sie sind nur die zusätzliche Länge, da sie 16 Bit kodiert ist. Vielen Dank! –

+0

Ja. Sie können bestätigen, was so läuft: '[System.Text.Encoding] :: Unicode.GetString ([byte []] (0xff, 0xfe, 0x66,0x00,0x6f, 0x00,0x6f, 0x00,0x0d, 0x00 , 0x0a, 0x00)) '. –

+2

Kann 'Set-Content' verwenden, das standardmäßig ASCII/ANSI/where verwendet. –