Cmd.exe
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)自体が使用している文字コードはUnicode (UTF-16) であり、(コマンドからの出力がUnicodeでありフォントがあれば)Unicode特有の文字を問題なく画面に表示することができる。ただしバッチファイルはCOMMAND.COMとの互換性維持の観点から、Windowsのシステムロケール設定(「Unicode対応ではないプログラムの言語」のこと、表示言語とは異なる)と同じ「ANSIコードページ」でエンコードされているという前提で解釈される。例えばシステムロケール設定が日本語の場合、既定でMicrosoftコードページ932 (CP932, Shift_JIS) が使われる。ただしバッチファイルからコマンドを実行して画面に出力する場合に文字コード変換が行われることはない。コマンドプロンプトで使用するANSIコードページはシステムロケール設定を変更する他、chcpコマンドによってコマンドプロンプトごとに一時的に変更することが可能であり、例えばコードページ65001に設定するとUTF-8として解釈される。UTF-16LE(コードページ1200)はANSIコードページと互換性がないためサポートされない。