外部コマンドの文字コード
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 23:32 UTC 版)
「cmd.exe」の記事における「外部コマンドの文字コード」の解説
Windowsではアプリケーションソフトウェアの一形態として、コマンドラインインターフェイス (CLI) を持つ「コンソールアプリケーション」があり、これは単独で動作させることができるだけでなくコマンドプロンプト上で動作させることもできる。これにより、ユーザーが外部コマンドとして独自のコマンドを開発し、リダイレクトやパイプを駆使してバッチ処理に応用することができる。 外部コマンドが出力する文字コードはその外部コマンドの実装によって異なり、一般にコマンド開発者はCLIコマンドの出力をUnicodeモードで行なうか、MBCSモードで行なうかを選ぶことができる。例えばC言語の場合は_setmode()関数を呼び出すことで設定できる。.NET Frameworkの場合はSystem.Console.OutputEncodingプロパティで設定できる。_setmode()で設定可能なUnicodeモードは更に_O_U16TEXTモード、_O_U8TEXTモード、_O_WTEXTモードに細分化されるが、いずれであってもコマンドプロンプトはそれらを正しく解釈し、現在のコードページに関係なくUnicode出力として扱い正しく画面に表示する。MBCSモードで出力した場合は現在のコードページの設定に従って内部的にUnicodeに変換され画面に表示される。 なお、ipconfigなど、Windowsに標準搭載されている外部コマンドは入出力をMBCSモードで行なっている。ただしシステムロケール設定に応じて表示言語を切り替えている。 仮にコマンドプロンプト上でUnicode入出力を行なう独自コマンドを開発する場合は、入出力をUnicodeモードで行なうことで実現できる。またバッチファイルによる読み取りを考慮する場合は、コマンドの入出力をUTF-8とし、バッチファイルをUTF-8で記述し、コードページをchcp 65001によってUTF-8に変更することでUnicodeの入出力に対応することができる。
※この「外部コマンドの文字コード」の解説は、「cmd.exe」の解説の一部です。
「外部コマンドの文字コード」を含む「cmd.exe」の記事については、「cmd.exe」の概要を参照ください。
- 外部コマンドの文字コードのページへのリンク