9

たとえば、次のようなバッチ ファイルがある'test.cmd'とします。

echo %1

コマンドプロンプトからこれを直接呼び出すことができ'test.cmd some¬arg'、その結果、文字列'some¬arg'が出力されます。

ただし、引数のために呼び出された 2 番目のバッチ ファイルに同じ呼び出しを配置し'tester.cmd'​​、コマンド プロンプトからこれを呼び出すと、結果として文字列'some%arg'が出力されます。

エンコーディングを台無しにするのは何ですか?どうすれば回避できますか? 以前にこれを修正したことは確かですが、方法を思い出せません...

ありがとう!

4

1 に答える 1

9

これは、バッチ ファイルが現在の cmd.exe とは異なるコード ページでエンコードされているためです。

西部の既定の構成では、cmd.exe はCP850で開始されますが、テキスト エディターは通常CP1252で動作します(Latin-1 または ISO-8859-1 と誤って呼ばれることがよくあります)。

文字 "¬" と "¼" は、これら 2 つのコード ページ "BC" で同じ文字コードを共有します。

解決策は簡単です。コード ページ 850 でバッチ ファイルをエンコードするか、または を発行して cmd.exe をコード ページ 1252 に切り替えますchcp 1252

于 2008-10-31T10:00:39.970 に答える