コード ページ
コードページ (code page) とは文字セットのことで、数字、区切り記号、および他のグリフを含むこともあります。 言語やロケールが違えば、使用するコード ページも異なることがあります。 たとえば、ANSI コード ページ 1252 は英語とほとんどのヨーロッパの言語で使用され、OEM コード ページ 932 は日本語の漢字で使用されます。
コード ページは、文字からシングルバイト値またはマルチバイト値へのマップとしてテーブルに表すことができます。 多くのコード ページでは、0x00 ~ 0x7F の範囲の文字として ASCII 文字セットを共有しています。
Microsoft ランタイム ライブラリでは、以下の種類のコード ページを使用しています。
システム既定の ANSI コード ページ。 既定では、ランタイム システムは起動時に、マルチバイト文字のコード ページをオペレーティング システムから得たシステム既定の ANSI コード ページに設定します。 次の呼び出しでも、ロケールはシステム既定の ANSI コード ページに設定されます。
setlocale ( LC_ALL, "" );
ロケールのコード ページ。 多くのランタイム ルーチンは、ロケールのコード ページを含む現在のロケール設定に応じて動作します。 詳細については、「ロケール依存のルーチン」を参照してください。既定では、Microsoft ランタイム ライブラリにあるロケール依存のルーチンはすべて、"C" ロケールに対応するコード ページを使用します。 実行時に setlocale 関数を呼び出し、使用中のロケールのコード ページを変更したり問い合わせたりすることができます。
マルチバイト文字のコード ページ。 ランタイム ライブラリにあるマルチバイト文字ルーチンのほとんどは、マルチバイト文字のコード ページの現在の設定に応じて動作します。 既定では、これらのルーチンはシステム既定の ANSI コード ページを使用します。 実行時に _getmbcp 関数および_setmbcp 関数を呼び出して、それぞれマルチバイト文字のコード ページの問い合わせと変更を行うことができます。
"C" ロケールは、C プログラムの実行に従来使用されてきたロケールに対応するロケールとして、ANSI で定義されています。 "C" ロケールに対するコード ページ ("C" コード ページ) は ASCII 文字セットに対応します。 たとえば、"C" ロケールでは、islower は 0x61 ~ 0x7A の値に対してのみ true を返します。 その他のロケールでは、islower はそのロケールで定義されたとおりに、それ以外の値に対しても True を返すことがあります。