10

Windows で自動化を行っていて、さまざまなコマンド (内部または外部) の出力をリダイレクトしている場合cmd.exe、ログ ファイルに Unicode と ANSI の出力が組み合わされていることがわかります (つまり、それらは無効であり、ビューアー/エディターでうまく読み込まれません)。 )。

cmd.exe を UTF-8 で動作させることは可能ですか? この質問はディスプレイに関するものではなく、stdin/stdout/stderr リダイレクトと Unicode に関するものです。

次のことができるソリューションを探しています。

  • UTF-8 を使用して、内部コマンドの出力をファイルにリダイレクトします
  • Unicode をサポートしているが UTF-8 としてエンコードされているファイルに外部コマンドの出力をリダイレクトします。

バッチ ファイルを使用してこの種の一貫性を得ることが不可能な場合、Python スクリプトを使用するなど、この問題を解決する別の方法はありますか? この場合、Unicode 検出を単独で実行できるかどうかを知りたいです (スクリプトを使用するユーザーは、呼び出されたツールが Unicode を出力するかどうかを覚えておくべきではありません。出力が UTF-8 に変換されることを期待するだけです。

簡単にするために、ツールの出力が Unicode でない場合は、UTF-8 (コードページ変換なし) と見なされると仮定します。

4

2 に答える 2

10

を使用chcpして、アクティブなコード ページを変更できます。これは、テキストのリダイレクトにも使用されます。

chcp 65001

ただし、 Unicode (この場合は UTF-16) リダイレクト出力を強制cmdするスイッチで開始された場合、これは効果がないことに注意してください。/uそのスイッチがアクティブな場合、 で設定されたコードページに関係なく、すべての出力は UTF-16LE になりchcpます。

また、ラスター フォントに設定すると、コンソールはインタラクティブな出力に使用できなくなることに注意してください。その場合、楽しいエラーメッセージが表示されます。

C:\Users\Johannes Rössel\Documents>x
Active code page: 65001

The system cannot write to the specified device.

したがって、健全なセットアップ (コンソールの TrueType フォント) を使用するか、コンソールをインタラクティブに使用し、非 ASCII 文字を含むパスを持つ場合は、このスタントをプルしないでください。

于 2010-04-25T14:37:16.207 に答える