2016-03-21 2 views
0

Windows Powershellのファイルへの出力。このコマンドを実行する奇妙な文字

echo "foo" > test.txt 

私はtest.txtの中に奇妙な結果を得ることができます。私は実際にスタックオーバーフローでここに直接コンテンツをコピー&ペーストすることはできませんが、ファイルの16進数の出力を表示する必要があります。これはFFFEが何であるかわからないthis-

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

のように見えるが、それはまた、各文字間にNULLを置くているように見えます。

これがなぜ起こっているのか、どのように解決できるのかについて、Windowsの人が正しい方向に導くことができますか?私はちょうど "foo"という内容のファイルをunmolestedにしたい。

答えて

4

0xFFFEは、通常のWindows UnicodeであるUTF-16 LE(リトルエンディアン)の場合はUnicode byte order markです。ファイルの内容は2バイトのBOM、0x6600( "f")、0x6f00( "o")、0x6f00( "o")、0x0d00( "r"またはキャリッジリターン)、0x0a00( " `n」は改行)

試してみてください。私が見る

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

ああ。つまり、それらはヌルではなく、16ビットでエンコードされているため、余分な長さに過ぎません。ありがとう! –

+0

'System.Text.Encoding] :: Unicode.GetString([byte [])(0xff、0xfe、0x66,0x00,0x6f、0x00,0x6f、0x00,0x0d、0x00)このように何が起こっているのかを確認することができます。 、0x0a、0x00)) '。 –

+2

ASCII/ANSI /をデフォルトとする 'Set-Content'を使用することもできます。 –