OSDN Git Service

9b603587122f1ff29092e7d641e1865048c5097b
[linuxjm/LDP_man-pages.git] / release / man7 / charsets.7
1 .\" t -*- coding: UTF-8 -*-
2 .\" Copyright (c) 1996 Eric S. Raymond <esr@thyrsus.com>
3 .\" and Copyright (c) Andries Brouwer <aeb@cwi.nl>
4 .\"
5 .\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA)
6 .\" This is free documentation; you can redistribute it and/or
7 .\" modify it under the terms of the GNU General Public License as
8 .\" published by the Free Software Foundation; either version 2 of
9 .\" the License, or (at your option) any later version.
10 .\" %%%LICENSE_END
11 .\"
12 .\" This is combined from many sources, including notes by aeb and
13 .\" research by esr.  Portions derive from a writeup by Roman Czyborra.
14 .\"
15 .\" Changes also by David Starner <dstarner98@aasaa.ofe.org>.
16 .\"
17 .\"*******************************************************************
18 .\"
19 .\" This file was generated with po4a. Translate the source file.
20 .\"
21 .\"*******************************************************************
22 .\"
23 .\" Japanese Version Copyright (c) 1996,1997,1998
24 .\"         ISHIKAWA Mutsumi, all rights reserved.
25 .\" Translated Mon Jul 21 03:46:21 JST 1997
26 .\"         by ISHIKAWA Mutsumi <ishikawa@linux.or.jp>
27 .\" Updated Fri Dec  3 JST 1999 by Kentaro Shirakata <argrath@ub32.org>
28 .\" Updated Fri Jan  4 JST 2002 by Kentaro Shirakata <argrath@ub32.org>
29 .\"
30 .TH CHARSETS 7 2014\-08\-19 Linux "Linux Programmer's Manual"
31 .SH 名前
32 charsets \- 文字集合の標準と国際化
33 .SH 説明
34 このマニュアルページでは、 様々な文字集合標準の概要と、 Unicode が広く使われるようになる前にこれらの文字集合が Linux
35 でどのように使われていたかを説明する。 この情報の中には、以前からあるシステムやドキュメントを扱う人々にとっては今も役立つことだろう。
36 .LP
37 ここで扱う標準としては ASCII, GB 2312, ISO 8859, JIS, KOI8\-R, KS, Unicode がある。
38 .LP
39 主な対象はロケール文字集合で実際に使用されていた文字集合についてであり、他のシステムで作成されたデータで使われていた無数の他の文字集合についてではない。
40 .SS ASCII
41 ASCII (American Standard Code For Information Interchange) は
42 7 ビット文字集合の元となったものであり、 もともとは米語 (American English) のためにデザインされた。 US\-ASCII
43 とも呼ばれる。 現在は、ISO 646:1991 IRV (International Reference Version) 標準で説明されている。
44 .LP
45 ドイツ語、フランス語、スペイン語などに 7 ビットで対応するため、 ASCII のドル記号を他の通貨記号に置き換え、
46 句読点を非英語文字のものに置き換えた様々な変種が登場した。 これらはすべて非推奨である。 glibc は ASCII
47 の完全なスーパーセットでない文字セットのロケールに対応していない。
48 .LP
49 UTF\-8 を使う場合、Unicode は ASCII と互換性があるので、 通常の ASCII テキストは新しい UTF\-8
50 を使ったシステムでもそのまま正しく表示することができる。
51 .SS "ISO 8859"
52 ISO 8859 は 15 組の一連の 8 ビット文字集合である。どの文字集合も
53 下位 (7 ビット) に ASCII を含み、 128 から 159 には制御文字が配置され、
54 160 から 255 には 96 個の固定幅図形文字が配置されている。
55 .LP
56 これらのうち、最も重要なのは ISO 8859\-1 ("Latin Alphabet No .1" / Latin\-1) である。 ISO 8859\-1
57 は広く採用され、様々なシステムでサポートされていたが、 徐々に Unicode で置き換えれている。 ISO 8859\-1 文字集合は Unicode
58 の最初の 256 文字でもある。
59 .LP
60 コンソールにおける、その他の 8859 文字集合のサポートは
61 (\fBsetfont\fP(8)) のようなユーザモード・ユーティリティを利用する事で可能になる。
62 このようなユーティリティを利用することにより、コンソールドライバにおけ
63 るキーボードと EGA グラフィックテーブルの割り当てを変更し、
64 "ユーザ割り当て(user mapping)"フォントテーブルを使用することができる。
65 .LP
66 以下は、それぞれの集合の簡単な説明である。
67 .TP 
68 8859\-1 (Latin\-1)
69 Latin\-1 は アルバニア語 (Albanian)、バスク語 (Basque)、デンマーク語 (Danish)、英語 (English)、フェロー語
70 (Faroese)、ガリシア語 (Galician)、アイスランド語 (Icelandic)、アイルランド語 (Irish)、イタリア語
71 (Italian)、ノルウェー語 (Norwegian)、ポルトガル語 (Portuguese)、スペイン語 (Spanish)、スウェーデン語
72 (Swedish) といった多くの西ヨーロッパ言語をカバーする。 オランダ語の IJ/ij やフランス語の œ といった合字や古いスタイルの
73 „German“ 引用符が欠けている点は以前は許容範囲と考えられていた。
74 .TP 
75 8859\-2 (Latin\-2)
76 Latin\-2 は、ボスニア語 (Bosnian)、クロアチア語 (Croatian)、チェコ語 (Czech)、ドイツ語
77 (German)、ハンガリー語 (Hungarian)、ポーランド語 (Polish)、スロヴァキア語 (Slovak)、スロベニア語
78 (Slovene) といった、 ラテン文字を書き文字として使用する多くの中央、東ヨーロッパの言語をサポートする。 以前は、ルーマニア語の ș/ț を
79 ş/ţ で置き換えるのは許容範囲と考えられていた。
80 .TP 
81 8859\-3 (Latin\-3)
82 Latin\-3 は、エスペラント語 (Esperanto)、マルタ語 (Maltese)、トルコ語 (Turkish) に対応するために設計されたが、
83 トルコ語に関しては後に 8859\-9 に取って代わられた。
84 .TP 
85 8859\-4 (Latin\-4)
86 Latin\-4 は、エストニア語 (Estonian)、ラトビア語 (Latvian)、リトアニア語 (Lithuanian)
87 といった北ヨーロッパの言語の文字を提供していたが、 8859\-10 と 8859\-13 に取って代わられた。
88 .TP 
89 8859\-5
90 ブルガリア語 (Bulgarian)、ベラルーシ語 (Byelorussian)、マケドニア語 (Macedonian)、ロシア語
91 (Russian)、セルビア語 (Serbian) をサポートし、 ウクライナ語 (Ukrainian) を (ほぼ完全に)
92 サポートするキリル文字集合である。 この文字集合が広く使われたことはなかった。 下の KOI8\-R/KOI8\-U に関する議論を参照のこと。
93 .TP 
94 8859\-6
95 アラビア語 (Arabic) をサポートするために作成された。 8859\-6 のグリフテーブル (glyph table)
96 は文字の形態を分割した固定幅フォントである。 そのため、適切なディスプレイエンジンと組み合わせ、 正しい initial, medial, final
97 フォームに結合しなければならない。
98 .TP 
99 8859\-7
100 現代ギリシャ語用として 1987 年に作成され、 2003 年に更新された。
101 .TP 
102 8859\-8
103 niqud (句読点記号) のない現代ヘブライ語 (Hebrew) をサポートする。 niqud と完全な聖書風ヘブライ語 (Biblical
104 Hebrew) はこの文字セットの対象外である。
105 .TP 
106 8859\-9 (Latin\-5)
107 これは、Latin\-1 の変種で、アイスランド語の文字をトルコ語(Turkish)文字に
108 置き換えたものである。
109 .TP 
110 8859\-10 (Latin\-6)
111 Latin\-6 は、 北欧 (Nordic) 地域を完全にカバーするために Latin\-4 には含まれていないイヌイット語 (Inuit)
112 (グリーンランド語 (Greenlandic)) と サーメ語 (Sami) (ラップ語 (Lappish)) を追加していた。
113 .TP 
114 8859\-11
115 タイ語のアルファベットをサポートし、 TIS\-620 標準とほとんど同一である。
116 .TP 
117 8859\-12
118 この文字集合は存在しない。
119 .TP 
120 8859\-13 (Latin\-7)
121 バルト海諸国の言語をサポートする。
122 特に、Latin\-4 に存在しないラトビア語の文字を含む。
123 .TP 
124 8859\-14 (Latin\-8)
125 これは、 ケルト語の文字セットであり、古代アイルランド語 (Old Irish)、マン島語 (Manx)、ゲール語 (Gaelic)、ウェールズ語
126 (Welsh)、コーンウォール語 (Cornish)、ブルターニュ語 (Breton) に対応する。
127 .TP 
128 8859\-15 (Latin\-9)
129 Latin\-9 は、広く使用されている Latin\-1 に似ているが、 いくつかのあまり使用されないシンボルを、 ユーロ記号と Latin\-1
130 に入っていないフランス語とフィンランド語の文字に置き換えている。
131 .TP 
132 8859\-16 (Latin\-10)
133 この文字セットは多くの東南ヨーロッパの言語に対応しており、もっとも重要なのはルーマニア語にはより完全に対応している点である。
134 .SS "KOI8\-R / KOI8\-U"
135 KOI8\-R は、 Unicode の前に、ロシアにおいてよく用いられた ISO でない文字集合である。 下位半分は ASCII である。上位半分は
136 ISO 8859\-5 よりいくらかよく設計されたキリル文字集合である。 KOI8\-U は KOI8\-R を元にしており、 ウクライナ語
137 (Ukrainian) への対応がより良いものになっている。 これらの文字集合はどちらも、 ISO\-8859 系列とは違い、 ISO\-2022
138 との互換性はない。
139 .LP
140 Linux での KOI8\-R のコンソールサポートは、
141 ユーザモードのユーティリティで実現されている。
142 これはキーボードの割り当てと EGA グラフィックテーブルを変更し、
143 コンソールドライバのフォントテーブルに "ユーザ割り当て" を行う。
144 .SS "GB 2312"
145 GB 2312 は、簡体文字を表現するための中国の国定標準文字セットである。 JIS X 0208 と同様に、文字は 94x94 の 2
146 バイトマトリックスに配置され、 EUC\-CN に用いられる。 EUC\-CN は Linux において最も重要なエンコーディングであり、 ASCII と
147 GB 2312 を含んでいる。 EUC\-CN はしばしば GB, GB 2312, CN\-GN などと呼ばれる。
148 .SS Big5
149 .\" Thanks to Tomohiro KUBOTA for the following sections about
150 .\" national standards.
151 Big5 は台湾で繁体文字を記述するのに一般的に使われる文字セットであった。 (Big5 は文字セットとエンコーディングの両方である。) これは US
152 ASCII の上位集合である。 非 ASCII 文字は 2 バイトで表現する。 0xa1\-0xfe のバイトは 2 バイト文字の 1
153 文字目として用いる。 Big5 とその拡張は台湾と香港で広く用いられていた。 これは ISO 2022 準拠ではない。
154 .SS "JIS X 0208"
155 JIS X 0208 は日本語の国定標準文字セットである。 他にもいくつか日本語の国定標準文字セットはある (JIS X 0201, JIS X
156 0212, JIS X 0213 など) が、これが最も重要である。 文字は 94x94 の 2 バイトマトリックスに配置される。 各バイトは
157 0x21\-0x7e の値を持つ。 JIS X 0208 は文字セットであり、エンコーディングではないことに注意すること。 これは、 JIS X 0208
158 自身はテキストデータの表現には使われない、ということである。 JIS X 0208 は、 EUC\-JP, Shift_JIS, ISO\-2022\-JP
159 といったエンコーディングを構成する部品として用いられる。 EUC\-JP が Linux において最も重要なエンコーディングであり、 ASCII と
160 JIS X 0208 を含んでいる。 EUC\-JP では、JIS X 0208 文字は 2 バイトで表現され、 各バイトは JIS X 0208
161 コードに 0x80 を加えたものである。
162 .SS "KS X 1001"
163 KS X 1001 は韓国の国定標準文字セットである。 JIS X 0208 と同様に、文字は 94x94 の 2 バイトマトリックスに配置される。
164 KS X 1001 は JIS X 0208 と同様に、 EUC\-KR, Johab, ISO\-2022\-KR
165 といったエンコーディングの部品として用いられる。 EUC\-KR は Linux において最も重要なエンコーディングであり、 ASCII と KS X
166 1001 を含んでいる。 KS C 5601 は KS X 1001 の古い名前である。
167 .SS "ISO 2022 and ISO 4873"
168 ISO 2022 と ISO 4873 標準では、 VT100 の動作に基づいたフォントコントロールモデルが規定されている。 このモデルは Linux
169 カーネルや \fBxterm\fP(1) において (部分的に) サポートされている。 日本語向けなど、ISO\-2022
170 をベースにした文字符号化がいくつか定義されてきた。
171 .LP
172 G0, G1, G2, G3 と呼ばれる 4 つの図形文字集合がある。
173 これらのうちのひとつは、最上位ビットが 0 であるコードのための現在の文字集合
174 (初期値は G0)、またひとつは最上位ビットが 1 であるコードのための現在の
175 文字集合(初期値は G1)である。それぞれの図形文字集合は 94 か 96 の文
176 字を持ち、基本的に 7\-bitの文字集合であり、040\-0177 (041\-0176) か
177 0240\-0377 (0241\-0376)のコードを使う。
178 G0 は常に 94 文字で 041\-0176 のコードを使用する。
179 .LP
180 文字集合の切り替えはシフトファンクション \fB^N\fP (SO または LS1),
181 \fB^O\fP (SI または LS0), ESC n (LS2), ESC o (LS3), ESC N (SS2), ESC O (SS3),
182 ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R) を使って行われる。
183 ファンクション LS\fIn\fP は最上位ビットが 0 であるコードのための文字集合を
184 G\fIn\fP に設定する。
185 ファンクション LS\fIn\fPR は最上位ビットが 1 であるコードのための文字セットを
186 G\fIn\fP に設定する。
187 ファンクション SS\fIn\fP は(最上位ビットの値にかかわらず)次の文字のみ
188 文字集合を G\fIn\fP (\fIn\fP=2 または 3)に設定する。
189 .LP
190 94 文字集合では、エスケープシーケンス ESC ( xx (G0 用), ESC ) xx (G1
191 用),  ESC * xx (G2 用), ESC + xx (G3 用) によって、G\fIn\fP 文字集合
192 を用いるように指示される。
193 xx は "ISO 2375 International Register of Coded Character Sets" で
194 決められている一文字、または二文字である。
195 たとえば ESC ( @ は ISO 646 文字集合を G0 として選び、ESC ( A
196 は(ナンバーサイン(#)の代わりに、ポンド(£)を持つ) UK スタンダード文字集合を
197 選択する。ESC ( B は(通貨記号のかわりにダラー($)を持つ) ASCIIを選択する。
198 ESC ( M は アフリカ言語(African languages) を選択し、ESC
199 ( ! A は キューバ語(Cuban)文字集合を選択する。などなど…
200 .LP
201 96\-文字集合では、エスケープシーケンス ESC
202 \- xx (G1 用), ESC . xx (G2 用), ECS / xx (G3 用)を用いることで、
203 G\fIn\fP 文字集合を使用するように指示される。
204 例えば、ESC \- G はヘブライアルファベット(Hebrew alphabet) を
205 G1 として選択する。
206 .LP
207 マルチバイト文字集合ではエスケープシーケンス E $ xx または ESC $ ( xx
208 (G0 用), ESC $ ) xx (G1 用), ESC $ * xx (G2 用), ESC$ + xx (G3 用) を
209 用いることで、 G\fIn\fP 文字集合を使用するように指示される。
210 例えば、ESC $ ( C は 韓国語(Korean)文字集合を G0 として選択する。
211 ESC $ B によって選択される日本語文字セットは、より最近のバージョンでは
212 ESC & @ ESC $ B によって選択されるようになった。
213 .LP
214 ISO 4873 はより制限された文字集合の利用を規定する、その規定で
215 は、G0 は(常に ASCIIに)固定される。従って、G1, G2, G3 は最上位ビットが
216 セットされたコードとしてのみ呼び出すことができる。
217 特に、\fB^N\fP と \fB^O\fP は用いられず、ESC ( xx は xx=B としてのみ
218 用いることができ、
219 ESC ) xx, ESC * xx, ESC + xx はそれぞれ ESC \- xx, ESC . xx, ESC / xx と
220 等価になる。
221 .SS TIS\-620
222 TIS 620 はタイの国定標準文字セットで、 ASCII の上位集合である。 ISO 8859 系列と同様に、タイ文字は 0xa1\-0xfe
223 に配置される。
224 .SS Unicode
225 Unicode (ISO10646) は、人間が用いる全ての言語の全ての文字を、 明確にあらわすことを目的とした規格である。 Unicode
226 の構造は各文字のエンコードに 20.1 ビットを与えている。 ほとんどのコンピューターは 20.1 ビットの整数を扱えないので、 Unicode
227 は普通内部データとして 32 ビット整数にエンコードされ、 16 ビット整数の列 (UTF\-16)(ある種の珍しい文字をエンコードする場合にだけ 2
228 つの 16 ビット整数が必要となる)か、 8 ビットバイトの列 (UTF\-8)として扱われる。
229 .LP
230 Linux は 8\-bit Unicode Transformation Form(UTF\-8) を用いて Unicode を
231 あらわす。 UTF\-8 は Unicode の可変長表現である。UTF\-8 は 7 ビットを
232 符号化するのに 1 バイトを、 11 ビットでは 2 バイトを、
233 16 ビットでは 3 バイトを、
234 21 ビットでは 4 バイトを、
235 26 ビットでは 5 バイトを、
236 31 ビットでは 6 バイトを用いる。
237 .LP
238 0,1,x をゼロ、1、任意のビットとすると、あるバイト 0xxxxxxx は Unicode では
239 00000000 0xxxxxxx とあらわされる。これは、ASCII の 0xxxxxxx と同じ
240 シンボルのコードである。このように、ASCII は変更なしに UTF\-8 に変換でき、
241 ASCII のみを使う場合は、コードにおいてもファイルサイズにおいても、
242 変更に関して何も気にしなくてよい。
243 .LP
244 110xxxxx というバイトは 2 バイトコードの始まりである、そして、110xxxxx
245 10yyyyyy は 00000xxx xxyyyyyy というように組み立てられる。また、
246 1110xxxx は 3 バイトコードの始まりであり、1110xxxx 10yyyyyy 10zzzzzz
247 は xxxxyyyy yyzzzzzz というように組み立てられる(UTF\-8 が 31 ビット
248 ISO 10646 コードを利用するときは、この工程は 6 バイトコードまで発展させられる)。
249 .LP
250 ISO\-8859 文字集合を使ったほとんどのテキストでは、
251 このことは、ASCII の範囲外を使った文字は
252 二つのバイトに符号化されるということを意味する。
253 (UTF\-8 を使うと、ISO\-8859 を使用している) 元々のテキストファイルの
254 サイズから 1 〜 2 パーセント大きくなってしまうことになる。
255 ロシア語やギリシャ語のテキストでは、
256 これによって元のテキストは 2 倍の大きさになることになる。
257 なぜなら、 これらの言語の文字のほとんどが ASCII の範囲外だからである。
258 日本語のユーザーの場合には、現在広く利用されている 16 ビットコードに
259 3 バイト必要ということだ。
260 いくつかの文字集合 (特に ISO 8859\-1) から Unicode への変換は
261 アルゴリズムで行うことができるが、
262 汎用的な変換には変換テーブルが必要であり、
263 16 ビットコードの場合はこのテーブルはかなり大きなものとなる。
264 .LP
265 UTF\-8 は自己同期的である。10xxxxxx は終端であり、ほかのバイトはコードの
266 先頭である。UTF\-8 の文字列における ASCII のバイトは、常にその文字自身を
267 表現することに注目してほしい。特に、幾つかの大きなコードのパートを形成
268 するために、NUL (\(aq\e0\(aq) や \(aq/\(aq を埋め込む必要はない。
269 .LP
270 ASCII と NUL と \(aq/\(aq は変更されないため、カーネルは UTF\-8 を
271 使用していることを特に意識しなくても良い。
272 カーネルはバイトが何をあらわしているかに注意する必要がない。
273 .LP
274 Unicode データ列のレンダリングは典型的には Unicode のサブセットからグリフへのマップである"サブフォント (subfont)"
275 テーブルを利用して行われる。 カーネル内部では、Unicode を使ってビデオ RAM 内部にロードされたサブフォントを記述している。 これは、
276 UTF\-8 モードの Linux コンソールでは 512 個の異なったシンボルを持った文字集合を利用できることを意味する。 これは、
277 日本語、中国語、韓国語では十分ではないが、 その他のほとんどの目的では十分である。
278 .SH 関連項目
279 \fBiconv\fP(1), \fBconsole\fP(4), \fBascii\fP(7), \fBiso_8859\-1\fP(7), \fBunicode\fP(7),
280 \fButf\-8\fP(7)
281 .SH この文書について
282 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
283 である。プロジェクトの説明とバグ報告に関する情報は
284 http://www.kernel.org/doc/man\-pages/ に書かれている。