6

Windows PowerShell の場合:

echo "string" > file.txt

Cygwin の場合:

$ cat file.txt
:::s t r i n g

$ dos2unix file.txt
dos2unix: Skipping binary file file.txt

ファイルに単純な「文字列」が必要です。どうすればいいのですか?cat file.txtつまり、出力として「文字列」だけが必要だと言うとき。Windows PowerShell からエコーしていますが、これは変更できません。

4

3 に答える 3

12

echo "string" | out-file -encoding ASCII file.txtシンプルな ASCII エンコードの txt ファイルを取得してみてください。

生成されたファイルの比較:

echo "string" | out-file -encoding ASCII file.txt

次の内容のファイルが生成されます。

73 74 72 69 6E 67 0D 0A (string..)

でも

echo "string" > file.txt

次の内容のファイルが生成されます。

FF FE 73 00 74 00 72 00 69 00 6E 00 67 00 0D 00 0A 00 (ÿþs.t.r.i.n.g.....)

(バイト オーダー マーク FF FE は、ファイルが UTF-16 (LE) であることを示します。UTF-16 (LE) の署名 = 2 バイト: 0xFF 0xFE の後に 2 バイト ペアが続きます。通常の 0-127 ASCII の場合、xx 00 xx 00 xx 00文字

于 2011-11-17T08:26:04.497 に答える
6

これら 2 つのコマンドは、どちらもデフォルトで UTF-16 エンコーディングを使用するという点で同等です。

echo "string" > file.txt
echo "string" | out-file file.txt

明示的なエンコーディング パラメータを後者の形式に追加して (jon Z で示されているように)、プレーンな ASCII を生成できます。

echo "string" | out-file -encoding ASCII file.txt

set-contentまたは、デフォルトで ASCII エンコーディングを使用する を使用することもできます。

echo "string" | set-content file.txt

当然の結果 1:

Unicode ファイルを 1 行で ASCII に変換したいですか?

これを使用するだけです:

get-content your_unicode_file | set-content your_ascii_file

これは次のように省略できます。

gc your_unicode_file | sc your_ascii_file

当然の結果 2:

Unicode と ASCII を実際に確認できるように、16 進ダンプを取得したいですか?

PowerShell.com で入手できるクリーンでシンプルなGet-HexDump関数を使用します。これで、生成されたファイルを次のように調べることができます。

Get-HexDump file.txt

自明ではないものについては、次のような方法で、出力に必要な列幅と処理するファイルのバイト数を指定できます。

Get-HexDump file.txt -width 15 -bytes 150
于 2011-11-17T20:50:59.353 に答える
0

PowerShell は、バイト オーダー マーク (BOM) を含む Unicode UTF-16 ファイルを作成します。

Dos2unix 6.0 以降では、UTF-16 ファイルを読み取って UTF-8 (デフォルトの Cygwin エンコーディング) に変換し、BOM を削除できます。6.0 より前のバージョンでは、UTF-16 ファイルがバイナリとして表示され、例のようにスキップされます。

于 2013-01-29T18:14:25.937 に答える