.\" 2001-05-11 Markus Kuhn <mgk25@cl.cam.ac.uk>
.\" Update
.\"
-.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
-.\" all rights reserved.
-.\" Translated Thu Jun 3 20:40:01 JST 1997
-.\" by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\" Updated (add SECURITY section) & modified Mon Feb 26 2001
-.\" by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated & Modified Sun Jul 1 09:28:47 JST 2001
-.\" by Yuichi SATO <ysato@h4.dion.ne.jp>
+.\"*******************************************************************
.\"
-.TH UTF-8 7 2001-05-11 "GNU" "Linux Programmer's Manual"
-.\"O .SH NAME
-.\"O UTF-8 \- an ASCII compatible multibyte Unicode encoding
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH UTF\-8 7 2001\-05\-11 GNU "Linux Programmer's Manual"
.SH 名前
-UTF-8 \- ASCII と互換性のある多バイト Unicode の符号化
-.\"O .SH DESCRIPTION
+UTF\-8 \- ASCII と互換性のある多バイト Unicode の符号化
.SH 説明
-.\"O The
-.\"O .B Unicode 3.0
-.\"O character set occupies a 16-bit code space.
-.\"O The most obvious
-.\"O Unicode encoding (known as
-.\"O .BR UCS-2 )
-.\"O consists of a sequence of 16-bit words.
-.\"O Such strings can contain as
-.\"O parts of many 16-bit characters bytes
-.\"O like \(aq\\0\(aq or \(aq/\(aq which have a
-.\"O special meaning in filenames and other C library function arguments.
-.\"O In addition, the majority of UNIX tools expects ASCII files and can't
-.\"O read 16-bit words as characters without major modifications.
-.\"O For these reasons,
-.\"O .B UCS-2
-.\"O is not a suitable external encoding of
-.\"O .B Unicode
-.\"O in filenames, text files, environment variables, etc.
-.\"O The
-.\"O .BR "ISO 10646 Universal Character Set (UCS)" ,
-.\"O a superset of Unicode, occupies even a 31-bit code space and the obvious
-.\"O .B UCS-4
-.\"O encoding for it (a sequence of 32-bit words) has the same problems.
-.B "ユニコード (Unicode) 3.0"
-文字集合は 16 ビットのコード空間を占める。
-最も単純な Unicode の符号化方法
-.RB ( UCS-2 )
+\fBユニコード (Unicode) 3.0\fP 文字集合は 16 ビットのコード空間を占める。
+最も単純な Unicode の符号化方法 (\fBUCS\-2\fP)
では、文字は 16 ビット・ワード (16 ビット文字の列) で構成される。
この列には、
-\(aq\\0\(aq や \(aq/\(aq のような (ファイル名や C のライブラリ関数の引き数の内部で)
+\(aq\e0\(aq や \(aq/\(aq のような (ファイル名や C のライブラリ関数の引き数の内部で)
特殊な意味を持つ 16 ビット文字が含まれることがある。
さらに、ほとんどの UNIX ツールは ASCII ファイルを入力として期待するので、
大幅な変更なしには 16 ビットワードを文字として読むことができない。
-これらの理由から、
-.B UCS-2
-はファイル名・テキストファイル・環境変数などに用いる、外部用の
-.B Unicode
-符号としては不適切である。
+これらの理由から、\fBUCS\-2\fP はファイル名・テキストファイル・環境変数などに用いる、
+外部用の \fBUnicode\fP 符号としては不適切である。
Unicode のスーパーセットである
-.B "ISO 10646 Universal Character Set (UCS)"
+\fBISO 10646 Universal Character Set (UCS)\fP
は 31 ビットのコード空間を占めるが、その最も単純な符号化である
-.B UCS-4
-にも (32 ビット・ワードの列として) 同じ問題がある。
-.PP
-.\"O The
-.\"O .B UTF-8
-.\"O encoding of
-.\"O .B Unicode
-.\"O and
-.\"O .B UCS
-.\"O does not have these problems and is the common way in which
-.\"O .B Unicode
-.\"O is used on UNIX-style operating systems.
-.B Unicode
-と
-.B UCS
-の
-.B UTF-8
-符号化にはこれらの問題がないので、UNIX 形式の OS 上で
-.B Unicode
-文字集合を使用するための一般的な方法となっている。
-.\"O .SS Properties
+\fBUCS\-4\fP にも (32 ビット・ワードの列として) 同じ問題がある。
+
+\fBUnicode\fP と \fBUCS\fP の \fBUTF\-8\fP 符号化にはこれらの問題がないので、
+UNIX 形式の OS 上で \fBUnicode\fP 文字集合を使用するための一般的な方法となっている。
.SS 性質
-.\"O The
-.\"O .B UTF-8
-.\"O encoding has the following nice properties:
-.B UTF-8
-符号化は以下のような素晴しい性質を備えている:
-.TP 0.2i
+\fBUTF\-8\fP 符号化は以下のような素晴しい性質を備えている:
+.TP 0.2i
*
-.\"O .B UCS
-.\"O characters 0x00000000 to 0x0000007f (the classic
-.\"O .B US-ASCII
-.\"O characters) are encoded simply as bytes 0x00 to 0x7f (ASCII
-.\"O compatibility).
-.\"O This means that files and strings which contain only
-.\"O 7-bit ASCII characters have the same encoding under both
-.\"O .B ASCII
-.\"O and
-.\"O .BR UTF-8 .
-.B UCS
-文字のうち 0x00000000 から 0x0000007f まで (古典的な
-.B US-ASCII
-の文字) は (ASCII との互換性のために) 単純に 0x00 から 0x7f のバイトに
-符号化する。これは 7 ビット ASCII 文字のみを含むファイルや文字列に
-関しては、
-.B ASCII
-と
-.B UTF-8
-で同じ符号化を行なうことを意味する。
-.TP
+\fBUCS\fP 文字のうち 0x00000000 から 0x0000007f まで (古典的な \fBUS\-ASCII\fP の文字) は
+(ASCII との互換性のために) 単純に 0x00 から 0x7f のバイトに符号化する。
+これは 7 ビット ASCII 文字のみを含むファイルや文字列に関しては、
+\fBASCII\fP と \fBUTF\-8\fP で同じ符号化を行なうことを意味する。
+.TP
*
-.\"O All
-.\"O .B UCS
-.\"O characters greater than 0x7f are encoded as a multibyte sequence
-.\"O consisting only of bytes in the range 0x80 to 0xfd, so no ASCII
-.\"O byte can appear as part of another character and there are no
-.\"O problems with, for example, \(aq\\0\(aq or \(aq/\(aq.
0x7f より大きいのすべての
-.B UCS
-文字は、 0x80 から 0xfd までの範囲のバイトのみを含む
+\fBUCS\fP 文字は、 0x80 から 0xfd までの範囲のバイトのみを含む
多バイト文字列に符号化される。
したがって文字列に
-ASCII バイトが含まれることがなく、\(aq\\0\(aq や \(aq/\(aq の問題は発生しない。
-.TP
+ASCII バイトが含まれることがなく、\(aq\e0\(aq や \(aq/\(aq の問題は発生しない。
+.TP
*
-.\"O The lexicographic sorting order of
-.\"O .B UCS-4
-.\"O strings is preserved.
-.B UCS-4
+\fBUCS\-4\fP
文字列では辞書的ソートの順序が保たれる。
-.TP
+.TP
*
-.\"O All possible 2^31 UCS codes can be encoded using
-.\"O .BR UTF-8 .
-2^31 ビットのすべての UCS コード が
-.B UTF-8
-を使用して符号化できる。
-.TP
+2^31 ビットのすべての UCS コード が \fBUTF\-8\fP を使用して符号化できる。
+.TP
*
-.\"O The bytes 0xfe and 0xff are never used in the
-.\"O .B UTF-8
-.\"O encoding.
-.B UTF-8
-符号化では 0xfe と 0xff のバイトは絶対に使用しない。
-.TP
+\fBUTF\-8\fP 符号化では 0xfe と 0xff のバイトは絶対に使用しない。
+.TP
*
-.\"O The first byte of a multibyte sequence which represents a single non-ASCII
-.\"O .B UCS
-.\"O character is always in the range 0xc0 to 0xfd and indicates how long
-.\"O this multibyte sequence is.
-.\"O All further bytes in a multibyte sequence
-.\"O are in the range 0x80 to 0xbf.
-.\"O This allows easy resynchronization and
-.\"O makes the encoding stateless and robust against missing bytes.
-ASCII でない
-.B UCS
-文字の多バイト列の最初のバイトは、
+ASCII でない \fBUCS\fP 文字の多バイト列の最初のバイトは、
常に 0xc0 から 0xfd の範囲で表現され、
その文字が何バイトで構成されているかを示す。
多バイト列の残りの部分のバイトは、それぞれ 0x80 から 0xbf の範囲にある。
これにより同期が容易になり、ステートレスな符号化が可能になり、
バイトの紛失に対して堅固になる。
-.TP
+.TP
*
-.\"O .B UTF-8
-.\"O encoded
-.\"O .B UCS
-.\"O characters may be up to six bytes long, however the
-.\"O .B Unicode
-.\"O standard specifies no characters above 0x10ffff, so Unicode characters
-.\"O can only be up to four bytes long in
-.\"O .BR UTF-8 .
-.B UTF-8
-を使用した
-.B UCS
-文字の符号化は最大 6 バイトの長さになる。
-しかし、
-.B Unicode
-規格では 0x10ffff より先の文字を指定しないので、Unicode 文字は
-.B UTF-8
-では 4 バイトまでにしかならない。
-.\"O .SS Encoding
+\fBUTF\-8\fP を使用した \fBUCS\fP 文字の符号化は最大 6 バイトの長さになる。
+しかし、\fBUnicode\fP 規格では 0x10ffff より先の文字を指定しないので、
+Unicode 文字は \fBUTF\-8\fP では 4 バイトまでにしかならない。
.SS 符号化
-.\"O The following byte sequences are used to represent a character.
-.\"O The sequence to be used depends on the UCS code number of the character:
以下のバイト列が文字の表現に使用される。
どのバイト列を使用するかは文字の UCS コード番号に依存する:
-.TP 0.4i
+.TP 0.4i
0x00000000 \- 0x0000007F:
-.RI 0 xxxxxxx
-.TP
+0\fIxxxxxxx\fP
+.TP
0x00000080 \- 0x000007FF:
-.RI 110 xxxxx
-.RI 10 xxxxxx
-.TP
+110\fIxxxxx\fP 10\fIxxxxxx\fP
+.TP
0x00000800 \- 0x0000FFFF:
-.RI 1110 xxxx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.TP
+1110\fIxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP
+.TP
0x00010000 \- 0x001FFFFF:
-.RI 11110 xxx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.TP
+11110\fIxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP
+.TP
0x00200000 \- 0x03FFFFFF:
-.RI 111110 xx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.TP
+111110\fIxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP
+.TP
0x04000000 \- 0x7FFFFFFF:
-.RI 1111110 x
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
-.RI 10 xxxxxx
+1111110\fIx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP 10\fIxxxxxx\fP
.PP
-.\"O The
-.\"O .I xxx
-.\"O bit positions are filled with the bits of the character code number in
-.\"O binary representation.
-.\"O Only the shortest possible multibyte sequence
-.\"O which can represent the code number of the character can be used.
-.I xxx
-ビットの部分には 2 進数で表わした文字コードのビット部分が対応する。
+\fIxxx\fP ビットの部分には 2 進数で表わした文字コードのビット部分が対応する。
その文字を表現するのに最も短いバイト列のみが使用できる。
.PP
-.\"O The
-.\"O .B UCS
-.\"O code values 0xd800\(en0xdfff (UTF-16 surrogates) as well as 0xfffe and
-.\"O 0xffff (UCS noncharacters) should not appear in conforming
-.\"O .B UTF-8
-.\"O streams.
-0xd800\(en0xdfff (UTF-16 サロゲート) や
-0xfffe, 0xffff (UCS の noncharacter) という
-.B UCS
-コードの値は、
-.B UTF-8
-に準拠したストリームに入れるべきではない。
-.\"O .SS Example
+0xd800\(en0xdfff (UTF\-16 サロゲート) や
+0xfffe, 0xffff (UCS の noncharacter) という \fBUCS\fP コードの値は、
+\fBUTF\-8\fP に準拠したストリームに入れるべきではない。
.SS 例
-.\"O .B Unicode
-.\"O character 0xa9 = 1010 1001 (the copyright sign) is encoded
-.\"O in UTF-8 as
-.B Unicode
-文字の 0xa9 = 1010 1001 (コピーライト・マーク) は UTF-8 で符号化すると
-.sp
+\fBUnicode\fP 文字の 0xa9 = 1010 1001 (コピーライト・マーク) は UTF\-8 で符号化すると
+以下のようになる。
+.PP
.RS
11000010 10101001 = 0xc2 0xa9
.RE
-.sp
-になる。
.PP
-.\"O and character 0x2260 = 0010 0010 0110 0000 (the "not equal" symbol) is
-.\"O encoded as:
-0x2260 = 0010 0010 0110 0000 (不等号) は
-.sp
+0x2260 = 0010 0010 0110 0000 (不等号) は以下の通り。
+.PP
.RS
11100010 10001001 10100000 = 0xe2 0x89 0xa0
.RE
-.sp
-になる。
-.\"O .SS Application Notes
.SS アプリケーションにおける注意
-.\"O Users have to select a
-.\"O .B UTF-8
-.\"O locale, for example with
-.\"O .PP
-.\"O .RS
-.\"O export LANG=en_GB.UTF-8
-.\"O .RE
-.\"O .PP
-.\"O in order to activate the
-.\"O .B UTF-8
-.\"O support in applications.
-ユーザーはアプリケーションの
-.B UTF-8
-サポートを有効にするために、以下のようにして
-.B UTF-8
-ロケールを選択しなければならない。
+ユーザーはアプリケーションの \fBUTF\-8\fP サポートを有効にするために、
.PP
.RS
-export LANG=en_GB.UTF-8
+export LANG=en_GB.UTF\-8
.RE
.PP
-.\"O Application software that has to be aware of the used character
-.\"O encoding should always set the locale with for example
-.\"O .PP
-.\"O .RS
-.\"O setlocale(LC_CTYPE, "")
-.\"O .RE
-.\"O .PP
+のようにして \fBUTF\-8\fP ロケールを選択しなければならない。
+.PP
使用されている文字符号化を分かっていなければならない
アプリケーションソフトウェアは、
以下のようにして常にロケールを設定すべきである。
setlocale(LC_CTYPE, "")
.RE
.PP
-.\"O and programmers can then test the expression
-.\"O .PP
-.\"O .RS
-.\"O strcmp(nl_langinfo(CODESET), "UTF-8") == 0
-.\"O .RE
-.\"O .PP
-.\"O to determine whether a
-.\"O .B UTF-8
-.\"O locale has been selected and whether
-.\"O therefore all plaintext standard input and output, terminal
-.\"O communication, plaintext file content, filenames and environment
-.\"O variables are encoded in
-.\"O .BR UTF-8 .
-また
-.B UTF-8
-ロケールが選択されていて、プレーンテキストの標準入出力・端末間通信・
-プレーンテキストファイルの内容・ファイル名・環境変数が
-.B UTF-8
-で符号化されているかをチェックするために、
-プログラマーは以下のような式を試すことができる。
+また、プログラマーは
.PP
.RS
-strcmp(nl_langinfo(CODESET), "UTF-8") == 0
+strcmp(nl_langinfo(CODESET), "UTF\-8") == 0
.RE
.PP
-.\"O Programmers accustomed to single-byte encodings such as
-.\"O .B US-ASCII
-.\"O or
-.\"O .B ISO 8859
-.\"O have to be aware that two assumptions made so far are no longer valid
-.\"O in
-.\"O .B UTF-8
-.\"O locales.
-.B US-ASCII
-や
-.B ISO 8859
+という式を評価することで、
+\fBUTF\-8\fP ロケールが選択されていて、プレーンテキストの標準入出力・端末間通信・
+プレーンテキストファイルの内容・ファイル名・環境変数が
+\fBUTF\-8\fP で符号化されているかをチェックすることができる。
+.PP
+\fBUS\-ASCII\fP や \fBISO 8859\fP
といったシングルバイトの符号化が習慣になっているプログラマーは、
これまでの 2 つの仮定が
-.B UTF-8
-ロケールにおいては最早有効ではなくなったことを知っておくべきだ。
-.\"O Firstly, a single byte does not necessarily correspond any
-.\"O more to a single character.
+\fBUTF\-8\fP ロケールにおいては最早有効ではなくなったことを知っておくべきだ。
1 番目の変更点は、1 バイトが必ずしも 1 つの文字に対応しないという点である。
-.\"O Secondly, since modern terminal emulators
-.\"O in
-.\"O .B UTF-8
-.\"O mode also support Chinese, Japanese, and Korean
-.\"O .B double-width characters
-.\"O as well as nonspacing
-.\"O .BR "combining characters" ,
-.\"O outputting a single character does not necessarily advance the cursor
-.\"O by one position as it did in
-.\"O .BR ASCII .
2 番目の変更点は、最近の端末エミュレータは
-.B UTF-8
-モードにおいて中国語・日本語・韓国朝鮮語の
-.B 全角文字
-やスペースが入らない (nonspacing)
-.B "合成文字 (combining characters)"
-に対応しているので、
-.B ASCII
-のときのように 1 文字出力した後で
+\fBUTF\-8\fP モードにおいて中国語・日本語・韓国朝鮮語の
+\fB全角文字\fP やスペースが入らない (nonspacing)
+\fB合成文字 (combining characters)\fP に対応しているので、
+\fBASCII\fP のときのように 1 文字出力した後で
カーソルを必ずしも 1 つだけ進めるわけではないという点である。
-.\"O Library functions such as
-.\"O .BR mbsrtowcs (3)
-.\"O and
-.\"O .BR wcswidth (3)
-.\"O should be used today to count characters and cursor positions.
今日では、文字やカーソルの位置を数えるのに
-.BR mbsrtowcs (3)
-や
-.BR wcswidth (3)
+\fBmbsrtowcs\fP(3) や \fBwcswidth\fP(3)
といったライブラリ関数を使うべきである。
.PP
-.\"O The official ESC sequence to switch from an
-.\"O .B ISO 2022
-.\"O encoding scheme (as used for instance by VT100 terminals) to
-.\"O .B UTF-8
-.\"O is ESC % G
-.\"O ("\\x1b%G").
-.\"O The corresponding return sequence from
-.\"O .B UTF-8
-.\"O to ISO 2022 is ESC % @ ("\\x1b%@").
-.\"O Other ISO 2022 sequences (such as
-.\"O for switching the G0 and G1 sets) are not applicable in UTF-8 mode.
-(VT100 端末などで使われる)
-.B ISO 2022
-符号化形式から
-.B UTF-8
-へ切替える公式なエスケープシーケンスは ESC % G ("\\x1b%G") である。
-これに対応する
-.B UTF-8
-から
-.B ISO 2022
-へのリターンシーケンスは ESC % @ ("\\x1b%@") である。
+(VT100 端末などで使われる) \fBISO 2022\fP 符号化形式から
+\fBUTF\-8\fP へ切替える公式なエスケープシーケンスは ESC % G ("\x1b%G") である。
+これに対応する \fBUTF\-8\fP から \fBISO 2022\fP へのリターンシーケンスは
+ESC % @ ("\x1b%@") である。
(G0 セットと G1 セットを切替えるといった)
-その他の ISO 2022 シーケンスは、UTF-8 モードでは使えない。
+その他の ISO 2022 シーケンスは、UTF\-8 モードでは使えない。
.PP
-.\"O It can be hoped that in the foreseeable future,
-.\"O .B UTF-8
-.\"O will replace
-.\"O .B ASCII
-.\"O and
-.\"O .B ISO 8859
-.\"O at all levels as the common character encoding on POSIX systems,
-.\"O leading to a significantly richer environment for handling plain text.
予知できる将来では、POSIX システム上の一般的な文字符号化の全てのレベルで
-.B UTF-8
-が
-.B ASCII
-と
-.B ISO 8859
-を置き換え、プレーンテキストを扱う非常に優れた環境が作られることが期待できる。
-.\"O .SS Security
+\fBUTF\-8\fP が \fBASCII\fP と \fBISO 8859\fP を置き換え、
+プレーンテキストを扱う非常に優れた環境が作られることが期待できる。
.SS セキュリティ
-.\"O The
-.\"O .BR Unicode " and " UCS
-.\"O standards require that producers of
-.\"O .B UTF-8
-.\"O shall use the shortest form possible, for example, producing a two-byte
-.\"O sequence with first byte 0xc0 is nonconforming.
-.BR Unicode " と " UCS
-の規格では、
-.B UTF-8
-の生成者はできるだけ短い形式を用いるよう要求している。
+\fBUnicode\fP と \fBUCS\fP の規格では、
+\fBUTF\-8\fP の生成者はできるだけ短い形式を用いるよう要求している。
例えば、先頭バイトが 0xc0 であるような 2 バイト列を
生成するのは準拠しているとはいえない。
-.\"O .B Unicode 3.1
-.\"O has added the requirement that conforming programs must not accept
-.\"O non-shortest forms in their input.
-.\"O This is for security reasons: if
-.\"O user input is checked for possible security violations, a program
-.\"O might check only for the
-.\"O .B ASCII
-.\"O version of "/../" or ";" or NUL and overlook that there are many
-.\"O .RB non- ASCII
-.\"O ways to represent these things in a non-shortest
-.\"O .B UTF-8
-.\"O encoding.
-.B Unicode 3.1
-では、規格に準拠するプログラムは
+\fBUnicode 3.1\fP では、規格に準拠するプログラムは
最短の表現形式ではない入力を受け付けない、という要求事項が追加された。
これはセキュリティ上の理由による。
ユーザー入力がセキュリティ上の危険に対しチェックされる場合、
-プログラムは
-.B ASCII
-版の "/../" や ";" や "NUL" だけをチェックし、
+プログラムは \fBASCII\fP 版の "/../" や ";" や "NUL" だけをチェックし、
最短に符号化されてないこれらの文字を見過ごしてしまうかもしれないからである。
-なぜなら、最短ではない
-.B UTF-8
-符号化では、これらの文字を表現するような様々な
-.B ASCII
-以外の形式が存在するためである。
-.\"O .SS Standards
-.SS 準拠
-ISO/IEC 10646-1:2000, Unicode 3.1, RFC\ 2279, Plan 9.
-.\"O .\" .SH AUTHOR
-.\" .SH 著者
+なぜなら、最短ではない \fBUTF\-8\fP 符号化では、これらの文字を表現するような様々な
+\fBASCII\fP 以外の形式が存在するためである。
+.SS 標準
+.\" .SH AUTHOR
.\" Markus Kuhn <mgk25@cl.cam.ac.uk>
-.\"O .SH "SEE ALSO"
+ISO/IEC 10646\-1:2000, Unicode 3.1, RFC\ 2279, Plan 9.
.SH 関連項目
-.BR nl_langinfo (3),
-.BR setlocale (3),
-.BR charsets (7),
-.BR unicode (7)
+\fBnl_langinfo\fP(3), \fBsetlocale\fP(3), \fBcharsets\fP(7), \fBunicode\fP(7)