日本語ロケール
JFP では、システム提供の日本語ロケールとして、日本語 EUC を扱う ja ロケール、PCK を扱う ja_JP.PCK ロケールおよび UTF-8 を扱う Ja_JP.UTF-8 ロケールを提供します。また、JLE 1.x システムとのネットワーク環境での共存のため 「japanese」というロケール名も ja と同等のロケールとして提供します。
ロケールとは、特定の言語や文化、慣習のことを意味します。日本語ロケールデータベースを作成することによって、国際化されたシステムソフトウェアやアプリケーションを、ロケールを切り替えるだけで日本語環境に適応できます。
基本的に日本語ロケール間の違いは、扱う文字コードが異なるだけで、ロケールとしての挙動は同じになるように定義されています。たとえば、ja ロケールで print という文字分類クラスに属する文字は、 ja_JP.PCK や ja_JP.UTF-8 ロケールでも同じ文字が定義されています。ただし、日本語 EUC の方が PCK より、UTF-8 の方が日本語 EUC より扱う文字が多いので、UTF-8 にしか存在しない文字に関しては、ja_JP.UTF-8 ロケールのみ、その文字の挙動が定義されています。
文字分類 (LC_CTYPE カテゴリ)
特定の似かよった文字の集合 (クラスと呼びます) を作ることによって、プログラム上、そのクラスを意識するだけで (そのクラスにどの文字が含まれているかを意識することなく)、ロケールに依存しない国際化プログラミングが可能になります。日本語ロケールでは、以下のようなクラスが定義されています。
これらの文字分類クラスは、regex(5) をサポートしたコマンドで、文字クラス表現の文字列として使用可能です。また、wctype(3C) の文字クラスとしても使用可能です。なお、文字分類は LC_CTYPE カテゴリの値に影響を受けます。開発者として文字分類クラスを利用する場合は、『JFP 開発ガイド』を参照してください。
表 2-4 X/Open で規定された文字分類クラス名と日本語ロケールでの定義範囲
文字クラス名
|
意味 / 範囲 [JIS X 0201 機能キャラクタ集合、ローマ文字用図形キャラクタ集合、片仮名用図形キャラクタ集合での XX/YY は XX 列 YY 行を意味します。JIS X 0208、JIS X 0212 での XX/YY は XX 区 YY 点を意味します。]
|
upper
|
任意の大文字を表す文字クラス
|
JIS X 0201 ローマ文字用図形キャラクタ集合
|
|
アルファベット大文字 (C/1 - D/10)
|
JIS X 0208
|
|
ローマ字大文字 (3/33 - 3/58)
ギリシャ文字大文字
(6/1 - 24)
ロシア文字大文字 (7/1 - 33)
|
JIS X 0212 [JIS X 0212 の文字に関しては、ja および ja_JP.UTF-8 ロケールのみ該当します。]
|
|
ダイアクリティカルマーク付きギリシャアルファベット文字大文字 (6/65 - 69、71、73、74、76)
キリル系アルファベット大文字 (7/34 - 46)
ラテン系アルファベット大文字 (9/1、2、4、6、8、9、11、12、13、15、16)
ダイアクリティカルマーク付ラテン系アルファベット大文字
(10/01 - 24、26 - 87)
|
lower
|
任意の小文字を表す文字クラス
|
JIS X 0201 ローマ文字用図形キャラクタ集合
|
|
アルファベット小文字 (E/1 - F/10)
|
JIS X 0208
|
|
ローマ字小文字 (3/65 - 90)
ギリシャ文字小文字 (6/33 - 56)
ロシア文字小文字 (7/49 - 81)
|
JIS X 02122
|
|
ダイアクリティカルマーク付きギリシャアルファベット文字小文字 (6/81 - 92)
キリル系アルファベット小文字 (7/82 - 94)
ラテン系アルファベット小文字 (9/33 - 48)
ダイアクリティカルマーク付ラテン系アルファベット小文字
(11/1 - 27、29 - 35、37 - 87)
|
digit
|
10 進表現に用いる 0 - 9 までの数字を判別するクラス
|
JIS X 0201 ローマ文字用図形キャラクタ集合
|
| |
数字 (B/0 - 9)
|
space
|
空白を判別するクラス
|
JIS X 0201 制御キャラクタ集合
|
|
空白 (A/9 - 13)
|
間隔文字
|
|
JIS X 0208
|
|
間隔 (1/1)
|
punct
|
記号、特殊文字などを判別するクラス
|
JIS X 0201 ローマ文字用図形キャラクタ集合
|
| |
A/1 - 15、B/10 - C/0、D/11 - E/0、F/11 - 14
|
cntrl
|
制御文字を判別するクラス
|
JIS X 0201 制御キャラクタ集合
|
|
すべての文字
|
抹消文字
C1 制御文字
|
| |
すべての文字
|
blank
|
フィールド区切り文字を判別するクラス
|
JIS X 0201 制御キャラクタ集合
|
|
A/9
|
間隔文字
JIS X 0208
|
|
間隔 (1/1)
|
xdigit
|
16 進表現に用いる英数字を判別するクラス
|
JIS X 0201 ローマ文字用図形キャラクタ集合
|
|
数字 (B/0 - 9)
A - F、a - f (C/1 - 6、E/1 - 6)
|
alpha
|
アルファベットを判別するクラス
|
upper クラスと lower クラスの文字
|
print
|
表示可能文字を判別するクラス
|
JIS X 0201 ローマ文字用図形キャラクタ集合
間隔文字
|
JIS X 0201 片仮名用図形キャラクタ集合
|
|
文字未定義領域以外のすべての文字
|
JIS X 0208
|
|
文字未定義領域以外のすべての文字
|
JIS X 02122
|
|
文字未定義領域以外のすべての文字
|
ベンダー定義文字領域
|
|
vdc クラスのうち、文字未定義領域以外のすべての文字
|
ユーザー定義文字領域
|
|
udc クラスのうち、文字未定義領域も含むすべての文字
|
graph
|
図形文字を判別するためのクラス
|
print クラスから space クラスに含まれる文字を除いたすべての文字
|
注 - ja_JP.UTF-8 ロケールではそれぞれのクラスで、これら以外のに Unicode で定義された文字が追加されています。
表 2-5 日本語ロケール専用の文字分類クラス名とその定義範囲
文字クラス名
|
意味 / 範囲 [JIS X 0201 機能キャラクタ集合、ローマ文字用図形キャラクタ集合、片仮名用図形キャラクタ集合での XX/YY は XX 列 YY 行を意味します。JIS X 0208、JIS X 0212 での XX/YY は XX 区 YY 点を意味します。]
|
jkanji
|
漢字 (漢字表記のために使用する記号、表意文字) を判別するクラス
|
JIS X 0208
|
|
16 区 - 84 区の文字定義領域
|
JIS X 0212 [JIS X 0212 の文字に関しては、ja および ja_JP.UTF-8 ロケールのみ該当します。]
|
|
16 区 - 77 区の文字定義領域
|
jkata
|
片仮名を判別するクラス
|
JIS X 0208
|
|
5/1 - 86、1/11、12、19、20
|
jhira
|
平仮名を判別するクラス
|
JIS X 0208
|
|
4/1 - 83、1/11、12、21、22、26
|
jdigit
|
digit に含まれる以外の数字を判別するクラス
|
JIS X 0208
|
|
3/16 - 25
|
jparen
|
括弧などに用いるための文字を判別するクラス
|
JIS X 0208
|
|
1/38 - 59
|
line
|
罫線素片を判別するためのクラス
|
JIS X 0208
|
|
8/1 - 32
|
jisx0201r
|
JIS X 0201 片仮名用図形キャラクタ集合に属する文字を判別するクラス
|
JIS X 0201 片仮名用図形キャラクタ集合
|
|
A/1 - D/15 までのすべての文字
|
jisx0208
|
JIS X 0208 に属する文字を判別するクラス
|
JIS X 0208
|
|
文字未定義領域の文字を含むすべての文字。 ただし、1 - 84 区まで
(13 区 ベンダー定義文字領域もここに含まれる)
|
jisx0212
|
JIS X 02122 に属する文字を判別するクラス
|
JIS X 0212
|
|
文字未定義領域の文字を含むすべての文字。ただし、1 - 84 区まで
(83、84 区ベンダー定義文字領域もここに含まれる)
ja_JP.PCK ロケールではどの文字もこのクラスに属さない
|
udc
|
ユーザー定義文字を判別するクラス
|
ユーザー定義文字領域の文字未定義領域も含むすべての文字
|
|
ja ロケール
|
|
ユーザー定義文字 (1 - 20 区)
|
0xf5a1 - 0xfefe
0x8ff5a1 - 0x8ffefe
|
|
ja_JP.PCK ロケール
|
|
ユーザー定義文字 (1 - 20 区)
|
|
ja_JP.UTF-8 ロケール
|
|
ユーザー定義文字 (6400 文字)
|
0xee8080 - 0xefa3bf (U+E000 - U+F8FF)
|
vdc
|
ベンダー定義文字を判別するクラス
|
ベンダー定義文字領域の文字未定義領域も含むすべての文字
|
|
ja ロケール
|
|
JIS X 0208 13 区
JIS X 02122 83 区 - 84 区
|
特殊記号
JIS X 0212 に含まれない IBM 拡張文字
|
|
ja_JP.PCK ロケール
|
|
JIS X 0208 13 区
NEC 選定 IBM 拡張文字
IBM 拡張文字
|
特殊記号
0xed40 - 0xeffc
0xfa40 - 0xfcfc
|
|
ja_JP.UTF-8ロケール
|
|
定義なし
| |
jalpha
|
漢字を表す文字を判別するクラス
|
|
JIS X 0208
|
|
3/33_58,、 3/65_90
| |
jspecial
|
特殊文字を表す文字を判別するクラス
|
JIS X 0208
|
|
1/2 - 94、2/1 - 14、2/26 - 33、2/42 - 48、2/60 - 74、2/82 - 89、94
|
JIS X 0212
|
|
2/15 - 25、 2/34 - 36、 2/75 - 81
|
JIS X 0208 13 区.....特殊記号
|
IBM 拡張文字
|
|
NEC 選定 IBM 拡張文字で定義される特殊文字
|
jgreek
|
ギリシャ文字を判別するクラス
|
JIS X 0208
|
|
6/1 - 7/33,、6/33 - 56
|
jrussian
|
ロシア文字を判別するクラス
|
JIS X 0208
|
|
7/1 - 7/33,、7/49 - 81
|
junit
|
単位記号を判別するクラス
|
JIS X 0208
|
|
1/75 - 83, 2/82, 83
|
JIS X 0212
|
|
2/80
|
jsci
|
学術記号を判別するクラス
|
JIS X 0208
|
|
1/60 - 74, 2/26 - 33, 2/42 - 48
|
|
2/60 - 74
|
jgen
|
一般記号を判別するクラス
|
JIS X 0208
|
|
1/84 - 94, 2/1-14,2/84-89, 94
|
JIS X 0212
|
|
2/35, 75, 2/79-81
|
JIS X 0212
|
|
2/35, 75, 2/79 - 81
|
jpunct
|
一般記号を判別するクラス
|
JIS X 0208
|
|
1/2 - 37
|
JIS X 0212
|
|
2/34, 36
|
文字の照合順序 (LC_COLLATE カテゴリ)
日本語文字の照合順序は、文字コード値の順になります。ただし、ja_JP.PCK ロケールの場合、JIS X 0201 片仮名用図形キャラクタ集合は、JIS X 0201 ローマ文字用図形キャラクタ集合、抹消文字の次になるように修正されています。文字の照合順序は、LC_COLLATE カテゴリの値に影響を受けます。
単語処理
JFP の提供する単語処理用共有オブジェクトは、単語処理用文字分類情報、詰め込み処理用単語分割・結合処理情報などをアプリケーションに供給します。これらの情報を利用するための API は今のところ公開されていません。
日付と時刻の表示形式 (LC_TIME カテゴリ)
SunOS および JFP における日本語の日付と時刻の表示形式は、以下のとおりです。
表 2-6 日付と時刻の表示形式
項目 (strftime(3C) での変換指定)
|
SunOS /JFP での定義
|
月の名前の省略形 (%b)
|
1月
|
2月
|
3月
|
4月
|
5月
|
6月
|
7月
|
8月
|
9月
|
10月
|
11月
|
12月
|
月の名前 (%B)
|
1月
|
2月
|
3月
|
4月
|
5月
|
6月
|
7月
|
8月
|
9月
|
10月
|
11月
|
12月
|
曜日の名前の省略形 (%a)
|
(日)
|
|
(月)
|
|
(火)
|
|
(水)
|
|
(木)
|
|
(金)
|
|
(土)
|
曜日の名前 (%A)
|
日曜日
|
|
月曜日
|
|
火曜日
|
|
水曜日
|
|
木曜日
|
|
金曜日
|
土曜日
|
時刻 (%X)
|
%H時%M分%S秒
|
日付 (%x)
|
%Y年%m月%d日
|
日付/時刻 (%c)
|
%Y年%m月%d日 %a %H時%M分%S秒
|
午前/午後 (%p)
|
午前
|
午後
|
午前/午後を伴う 12 時間表示形式(%r)
|
%p%I時%M分%S秒
|
時刻の代替表示形式 (%EX)
|
%H時%M分%S秒
|
日付の代替表示形式 (%Ex)
|
%EY%m月%d日
|
日付および時刻の代替形式 (%Ec)
|
%EY%m月%d日 %a %H時%M分%S秒
|
代替年表示
(%EY)
| |
1927/01/01 - 1989/01/07
|
昭和%Ey年
|
1989/01/08 - 1989/12/31
|
平成元年
|
1990/01/01 -
|
平成%Ey年
|
日付/時刻、長形式 (%C)
|
%Y年%m月%d日 %a %H時%M分%S秒 %Z
|