2.7.1. リンク時におけるロケールの選択

C ライブラリの locale サブシステムはリンク時に選択することも、実行時に選択可能になるように拡張することもできます。 以下にライブラリによるロケールカテゴリの使用について説明します。

ISO8859-1 の実装

Table 2.7 に、ISO8859--1(Latin--1 アルファベット)のロケールカテゴリを示します。

Table 2.7. デフォルトの ISO8859-1 ロケール

シンボル説明
__use_iso8859_ctypeISO8859-1 (Latin-1) の文字体系が選択されます。 この文字体系は、文字コード 160 〜 255 で欧州言語の修辞記号、文字、アクセント文字が表現されている以外は、基本的に 7 ビットの ASCII コードと同じです。
__use_iso8859_collateLatin-1 アルファベットに適した strcoll/strxfrm 照合テーブルが選択されます。 デフォルトの C ロケールには照合テーブルは必要ありません。
__use_iso8859_monetaryLatin-1 コーディングを使用した英国通貨カテゴリが選択されます。
__use_iso8859_numeric数値の出力において、カンマによる 3 桁区切りが選択されます。
__use_iso8859_locale上記の ISO8859-1 でのすべての選択内容が選択されます。

ISO8859-1 には LC_TIME カテゴリはありません。

Shift-JIS および UTF-8 の実装

Table 2.8 に、Shift-JIS(日本語文字)または UTF-8(Unicode 文字)のロケールカテゴリを示します。

Table 2.8. デフォルトの Shift-JIS ロケールと UTF-8 ロケール

関数説明
__use_sjis_ctype文字セットに、日本語文字の Shift-JIS マルチバイトエンコーディングが設定されます。
__use_utf8_ctype文字セットに、すべての Unicode 文字の UTF-8 マルチバイトエンコーディングが設定されます。

以下に Shift-JIS エンコーディングの作用を説明します。

  • 通常の ctype 関数は、Shift-JIS での独立文字となるすべてのバイト値に対して正常に動作します。 例えば、isalpha() によって半角カタカナはアルファベットとして処理されます。Shift-JIS では、半角カタカナは 0xA60xDF の範囲でシングルバイトとしてエンコードされています。

  • mbrtowc()mbsrtowcs()wcrtomb() などのマルチバイト変換関数は、すべて、Unicode のワイド文字列と Shift-JIS のマルチバイト文字文字列の間で変換を行います。

  • printf("%ls") では Unicode ワイド文字列が Shift-JIS 出力に変換され、scanf("%ls") では Shift-JIS 入力が Unicode ワイド文字列に変換されます。

アプリケーション内に複数のロケールがある場合には、マルチバイトロケールとシングルバイトロケール間の切り替えを実行時に自由に行えます。 デフォルトでは、一度に含まれるロケールは 1 つだけです。

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0349AJ
Non-Confidential