Windowsのコマンドプロンプトのデフォルトの文字コードが相変わらず Shift-JIS な件

既出のように Windows10 の 1909 以来 notepad のデフォルト文字コードが BOM なし UTF-8 (いわゆる UTF-8N )になったので、自作プログラムの日本語出力も UTF-8 になるが、コマンドプロンプトの起動時文字コードが相変わらず Shift-JIS であるため、自作プログラムの日本語出力が文字化けする。

使用する digital mars C/C++ compiler は Shift-JIS のみのようだ。

詳細は調査中。#pragma setlocale("LOCALE") で色々指定できそうな気配もある。

デフォルトは "C" ロケール

コマンドラインからは -Bj -j0 でコードページ 932 対応。

UTF-8N はコードページ 65001 だが、少なくともコマンドライン・スイッチではこれには対応していないようだ。

notepad はコマンドラインに /a スイッチを付けて起動することにより ANSI コードで動作する。

>  notepad /a ファイル名

コマンドプロンプトは chcp コマンドでコードページを表示・切替えられる。

E:\dmc>chcp
現在のコード ページ: 932

E:\dmc>chcp 65001                  # コードページを UTF-8N に。

Active code page: 65001

E:\dmc>chcp 932

現在のコード ページ: 932         # コードページを Shift-JIS に。

E:\dmc>

 

日本語文字コード対応状況のまとめ

                                     ANSI(Shift-JIS, CP932)    UTF-8N(CP65001)

notepad                       /a スイッチ                     デフォルト

コマンドプロンプト  デフォルト(chcp 932)       chcp 65001

dmc                              -Bj -j0                               OK?サポート無?

 

したがって、dmc を使う限り ANSI (Shift-JIS, CP932) での運用がよいかな。

日本語を使うときは notepad に /a スイッチを付けて起動。