WindowsOSがシステムとして利用する文字コードを調べていて、一人で悩んでしまったことがあるので、こちらのFAQに記載します。
私が調べたかったのは、Azure 上のWindows Server 2022ですが、全てのWindowsで共通の話です。
結論から言うと、
Windows OS 内部で使用する文字コードは Unicode であり、符号化方式 (エンコーディング) は UTF-16 です。
この仕様は Windows NT (1993 年リリース) から変更されておらず、Windows /Windows Server のバージョンやエディションによる差異もありません。
以上です。
これだけ書くと、とても単純な話なのですが、ネット上で、
「日本語化したWindowsの文字コードはShift_JISである」
と堂々と記載されていることがあり、非常に迷いました。
また、某AIに以下のように質問すると
質問日本語化したWindowsOSの文字コードはなんですか?
回答日本語化したWindowsOSでは、一般的にはShift JIS (Shift Japanese Industrial Standards) が使用されています。Shift JISは、日本語の文字セットを表現するために広く使われる文字コードの一つです。
と回答が返ってきます。
上記は質問の仕方があまり良くなく、回答にしても間違いではないのかもしれません。Shift JISも扱えます。
しかし、Windowsの、システムとしての文字コードは Unicode であり、符号化方式 (エンコーディング) は UTF-16(2回目)
というのが正確な情報です。
なお、
Unicode をサポートしないアプリケーションやライブラリを動作させる際に限り、UTF-16からシステム ロケールで設定された文字コードおよび符号化方式への変換処理
が行われるようです。これは、「コマンドプロンプト」などがよい例だと思います。
日本語化したWindows(システムロケールが日本)のコマンドプロンプトはデフォルトではShift-JISでの入出力対応になっています。
このあたりも、誤解を生みやすい部分なのだと思います。
(Windows標準のzip解凍アプリなどもそうなのかな。。。)
しかしながら、
Windows OS 内部で使用する文字コードは Unicode であり、符号化方式 (エンコーディング) は UTF-16 です。(3回目)