:: reverse dictionary ::
※ソースファイルについて
ロケールを設定するには、setlocale 関数を使います。
#include <locale.h> #include <stdio.h>
wchar_t str[] = L"Cプログラム"; char *locale; /* ロケールを日本語に設定 */ locale = setlocale(LC_ALL, "ja"); printf("locale=%s\n", locale); wprintf(L"str=%s\n", str);
次のような出力になります。(Windows の場合)
locale=Japanese_Japan.932 str=Cプログラム
char *setlocale(int c, const char *l)
カテゴリ c のロケールに新しいロケール l を設定します。
ロケールの設定に成功した場合は、設定したロケールの名前へのポインタを返します。 ロケールの設定に失敗した場合は、NULL を返します。
c … ロケール l を設定するカテゴリ
l … 新しく設定するロケールの名前
・設定に成功 … 設定したロケールの名前へのポインタ
・設定に失敗 … NULL
カテゴリ c には、次の定数のいずれかを指定します。
| 定数 | 影響範囲 | 影響する関数 |
|---|---|---|
| LC_ALL | 下記の影響範囲のすべて | 下記の関数のすべて |
| LC_COLLATE | ロケールに基づく文字列の照合 |
strcollstrxfrmwcscoll
|
| LC_CTYPE | 文字および文字列の処理 |
文字処理関数 文字列処理関数 |
| LC_MONETARY | 通貨の書式 | localeconv |
| LC_NUMERIC |
数値の書式 (小数点や3桁ごとの区切り) |
出力関数( printf など)変換関数( atof など)localeconv
|
| LC_TIME | 日付と時刻の書式 |
strftimewcsftime
|
ロケール l は、次の書式で指定します。
<Windows の場合>
言語コード[_国コード][.コードページ]
例 1) "ja" 例 2) "japanese" 例 3) "japanese_japan" 例 4) "japanese_japan.932"
<Unix/Linux の場合>
言語コード[_国コード][.コードセット]
例 1) "japanese" 例 2) "ja" 例 3) "ja_JP" 例 4) "ja_JP.eucJP"
通常は、ISO 639 で定義されている言語コードを指定します。
OS によっては、言語のスペルを指定できます。
主な言語コードは、次のとおりです。
| 言語コード | 言語 | スペル |
|---|---|---|
| cs | チェコ語 | czech |
| da | デンマーク語 | danish |
| de | ドイツ語 | german |
| el | ギリシャ語 | greek |
| en | 英語 | english |
| es | スペイン語 | spanish |
| fi | フィンランド語 | finnish |
| fr | フランス語 | french |
| hu | ハンガリー語 | hungarian |
| is | アイスランド語 | icelandic |
| it | イタリア語 | italian |
| ja | 日本語 | japanese |
| ko | 韓国語 | korean |
| nl | オランダ語 | dutch |
| no | ノルウェー語 | norwegian |
| pl | ポーランド語 | polish |
| pt | ポルトガル語 | portuguese |
| ru | ロシア語 | russian |
| sk | スロバキア語 | slovak |
| sv | スウェーデン語 | swedish |
| tr | トルコ語 | turkish |
| zh | 中国語 | chinese |
通常は、ISO 3166 で定義されている国コードを指定します。
(Windows は3文字、Unix/Linux は2文字を使用)
OS によっては、国・地域のスペルを指定できます。
主な国コードは、次のとおりです。
| 国コード | 国・地域 | スペル | |
|---|---|---|---|
| 2文字 | 3文字 | ||
| AT | AUT | オーストリア | austria |
| AU | AUS | オーストラリア | australia |
| BE | BEL | ベルギー | belgium |
| BR | BRA | ブラジル | brazil |
| CA | CAN | カナダ | canada |
| CH | CHE | スイス | switzerland |
| CN | CHN | 中国 |
china pr china pr-china |
| CZ | CZE | チェコ | czech |
| DE | DEU | ドイツ | germany |
| DK | DNK | デンマーク | denmark |
| ES | ESP | スペイン | spain |
| FI | FIN | フィンランド | finland |
| FR | FRA | フランス | france |
| GB | GBR | イギリス |
britain england great britain united kingdom united-kingdom |
| GR | GRC | ギリシャ | greece |
| HK | HKG | 香港 |
hong kong hong-kong |
| HU | HUN | ハンガリー | hungary |
| IE | IRL | アイルランド | ireland |
| IS | ISL | アイスランド | iceland |
| IT | ITA | イタリア | italy |
| JP | JPN | 日本 | japan |
| KR | KOR | 韓国 |
korea south korea south-korea |
| MX | MEX | メキシコ | mexico |
| NL | NLD | オランダ |
holland netherlands |
| NO | NOR | ノルウェー | norway |
| NZ | NZL | ニュージーランド |
new zealand new-zealand |
| PL | POL | ポーランド | poland |
| PT | PRT | ポルトガル | portugal |
| RU | RUS | ロシア | russia |
| SE | SWE | スウェーデン | sweden |
| SG | SGP | シンガポール | singapore |
| SK | SVK | スロバキア | slovak |
| TR | TUR | トルコ | turkey |
| TW | TWN | 台湾 | taiwan |
| US | USA | アメリカ |
america united states united-states |
Windows では、「コードページ」を指定します。
コードページとは、文字コードを表す数字のことです。
言語や国によって、使用できるコードページは異なります。
主なコードページは、次のとおりです。
| コードページ | 文字コード |
|---|---|
| 932 | Shift-JIS |
| 1200 | UTF-16 Little Endian |
| 1201 | UTF-16 Big Endian |
| 1250 | Windows 3.1 Eastern European |
| 1251 | Windows 3.1 Cyrillic |
| 1252 | Windows 3.1 US (ANSI) |
| 1253 | Windows 3.1 Greek |
| 1254 | Windows 3.1 Turkish |
| 12000 | UTF-32 |
| 12001 | UTF-32 Big Endian |
| 20127 | US-ASCII |
| 28591 | ISO-8859-1 |
| 50220 | ISO-2022-JP |
| 51932 | EUC-JP |
| 65000 | UTF-7 |
| 65001 | UTF-8 |
Unix/Linux では、「コードセット」を指定します。 コードセットは、文字コードと同じ、またはそれに近い文字列で構成されています。
主なコードセットは、次のとおりです。
| コードセット | 文字コード |
|---|---|
| eucJP | EUC-JP |
| ISO-2022-JP | ISO-2022-JP |
| ISO-8859-1 | ISO-8859-1 |
| SJIS | Shift-JIS |
| UTF-8 | UTF-8 |
既定のロケールは "C" です。
このロケールでは、ワイド文字列を扱う関数で全角文字が処理されません。
例えば wprintf 関数では、全角文字が出力されません。
wchar_t str[] = L"Cプログラム"; wprintf(L"str=%s\n", str);
次のような出力になります。(Windows の場合)
str=C
ワイド文字列を扱う場合は、全角文字を処理できるロケールを指定した setlocale 関数を呼ぶ必要があります。
ロケール l には、"" (空の文字列)または NULL を指定できます。
"" を指定した場合は、プラットフォームのロケールを使って設定します。
Windows の場合は "Japanese_Japan.932" 、Unix/Linux の場合は "ja_JP.eucJP" になります。
NULL を指定した場合は、現在設定されているロケールを取得します。
(ロケールの設定は変更されません)
char *lcctype; char *lctime; lcctype = setlocale(LC_CTYPE, NULL); lctime = setlocale(LC_TIME, NULL);
lcctype は "C" 、lctime は "C" になります。
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com