UCRT ロケール名、言語、および国/地域識別文字列

引数setlocaleには、いくつかの方法で 、、_wsetlocale_create_locale、および_wcreate_locale関数を設定できます。locale ロケールは、Windows NLS API でサポートされているロケール名、言語、国/地域コード、およびコード ページを使用して設定できます。 この引数は locale 、次のいずれかの形式をとります。

locale :: "locale-name"
 |"language[_country-region[.code-page]]"
 |".code-page"
 | "C"
 |""
 | NULL

locale-name の形式は、IETF 標準化された短い文字列 (例: 英語 (米国) の en-US、ボスニア語 (キリル、ボスニア ヘルツェゴビナ) の bs-Cyrl-BA など) になります。 これらの形式は優先されます。 Windows オペレーティング システムのバージョンごとにサポートされるロケール名の一覧については、[MS-LCID]: Windows Language Code Identifier (LCID) Reference ([MS-LCID]: Windows 言語コード識別子 (LCID) リファレンス) の「Appendix A: Product Behavior」(付録 A: 製品の動作) に記載されている表の、[Language tag] 列をご覧ください。 このリソースは、ロケール名のサポートされている言語、スクリプト、および地域の部分を示しています。 既定以外の並べ替え順序を持つサポートされているロケール名については、並べ替え順序識別子ロケール名列を参照してください。 Windows 10 以降では、有効な BCP-47 の言語タグに対応するロケール名が許可されています。 たとえば、 jp-US 有効な BCP-47 タグですが、実際にはロケール機能専用 US です。

ロケールを作成するために、言語識別文字列、または言語識別文字列と国/地域識別文字列が使用される場合、言語[_国_地域[.コード_ページ]] 形式がカテゴリのロケール設定に格納されます。 サポートされている言語文字列のセットは言語文字列説明され、サポートされている国と地域の文字列の一覧は Country/Region 文字列一覧表示されます。 指定した言語が指定した国または地域に関連付けられていない場合、指定した国または地域の既定の言語がロケール設定に格納されます。 コードに埋め込まれたロケール文字列やストレージにシリアル化されるロケール文字列には、この形式をお勧めしません。これらの文字列は、ロケール名フォームよりもオペレーティング システムの更新によって変更される可能性が高くなります。

code-page は、ロケールに関連付けられた ANSI/OEM コード ページです。 コード ページは、言語または言語と国/地域のみによってロケールを指定すると決定されます。 特殊な値 .ACP は国/地域の ANSI コード ページを指定します。 特殊な値 .OCP は国/地域の OEM コード ページを指定します。 たとえば、ロケールとして指定 "Greek_Greece.ACP" した場合、ロケールは (ギリシャ語の場合は ANSI コード ページ) として Greek_Greece.1253 格納され、ロケールとして指定 "Greek_Greece.OCP" した場合は (ギリシャ語の OEM コード ページ) として Greek_Greece.737 格納されます。 コード ページの詳細については、「コード ページ」を参照してください。 Windows でサポートされているコード ページの一覧については、「コード ページ識別子」を参照してください

ロケールを指定するためにコード ページのみを使用する場合は、報告される GetUserDefaultLocaleName ユーザーの既定の言語と国/地域が使用されます。 たとえば、英語 (米国) に構成されたユーザーのロケールとして ".1254" (ANSI トルコ語) を指定した場合は、格納されているロケールは English_United States.1254 です。 一貫性のない動作につながる可能性があるため、このフォームはお勧めしません。

locale引数のC値は、C 変換の最小 ANSI 準拠環境を指定します。 C ロケールは、任意の char データ型が 1 バイトであり、値は常に 256 未満であると推定します。 locale が空の文字列をポイントしている場合は、実装定義のネイティブ環境になります。

setlocale 関数と _wsetlocale 関数に LC_ALL カテゴリを使用して、ロケールのカテゴリのすべてを同時に指定できます。 カテゴリはすべて同じロケールに設定できますが、次の形式を持つロケール引数を使用して各カテゴリを個別に設定できます。

LC-ALL-specifier :: locale
 |[LC_COLLATE=locale][;LC_CTYPE=locale][;LC_MONETARY=locale][;LC_NUMERIC=locale][;LC_TIME=locale]

セミコロンで区切って複数のカテゴリの種類を指定できます。 指定されていないカテゴリの種類では、現在のロケール設定が使用されます。 たとえば、このコード スニペットは、すべてのカテゴリの現在のロケールを de-DE に設定し、カテゴリ LC_MONETARYen-GB に、カテゴリ LC_TIMEes-ES に設定します。

_wsetlocale(LC_ALL, L"de-DE");
_wsetlocale(LC_ALL, L"LC_MONETARY=en-GB;LC_TIME=es-ES");

UTF-8 のサポート

Utf-8 のサポートは、ロケール文字列で UTF-8 コード ページを使用することで有効にできます。 詳細については、次の UTF-8 サポート セクションを setlocale参照してください。

関連項目

C ランタイム ライブラリ リファレンス
_get_current_locale
setlocale, _wsetlocale
_create_locale, _wcreate_locale
言語文字列
国/地域の文字列