OSDN Git Service

e0df9eb2b120274a67faeee28380e549e56e731b
[linuxjm/LDP_man-pages.git] / draft / man3 / iconv.3
1 .\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
2 .\"
3 .\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA)
4 .\" This is free documentation; you can redistribute it and/or
5 .\" modify it under the terms of the GNU General Public License as
6 .\" published by the Free Software Foundation; either version 2 of
7 .\" the License, or (at your option) any later version.
8 .\" %%%LICENSE_END
9 .\"
10 .\" References consulted:
11 .\"   GNU glibc-2 source code and manual
12 .\"   OpenGroup's Single UNIX specification
13 .\"     http://www.UNIX-systems.org/online.html
14 .\"
15 .\" 2000-06-30 correction by Yuichi SATO <sato@complex.eng.hokudai.ac.jp>
16 .\" 2000-11-15 aeb, fixed prototype
17 .\"
18 .\"*******************************************************************
19 .\"
20 .\" This file was generated with po4a. Translate the source file.
21 .\"
22 .\"*******************************************************************
23 .TH ICONV 3 2012\-05\-10 GNU "Linux Programmer's Manual"
24 .SH 名前
25 iconv \- 文字セット変換を行う
26 .SH 書式
27 .nf
28 \fB#include <iconv.h>\fP
29 .sp
30 \fBsize_t iconv(iconv_t \fP\fIcd\fP\fB,\fP
31 \fB             char **\fP\fIinbuf\fP\fB, size_t *\fP\fIinbytesleft\fP\fB,\fP
32 \fB             char **\fP\fIoutbuf\fP\fB, size_t *\fP\fIoutbytesleft\fP\fB);\fP
33 .fi
34 .SH 説明
35 \fBiconv\fP() 関数は、ある文字エンコーディングの文字シーケンス列を別の文字
36 エンコーディングの文字シーケンスに変換する。\fIcd\fP 引き数は変換ディスク
37 リプタ (conversion descriptor) であり、以前は \fBiconv_open\fP(3) を呼び出
38 すことで生成されていた。変換ディスクリプタは \fBiconv\fP() が変換に使用す
39 る文字エンコーディングを定義するものである。 \fIinbuf\fP 引き数は入力シー
40 ケンスの先頭バイトを指す変数のアドレスであり、\fIinbytesleft\fP は入力シー
41 ケンスのバッファのバイト数を示す。\fIoutbuf\fP 引き数は出力バッファで利用
42 できる先頭バイトを指す変数のアドレスであり、 \fIoutbytesleft\fP は出力
43 バッファのバイト数を示す。
44 .PP
45 主に使われるのは、 「\fIinbuf\fP が NULL でなく、かつ \fI*inbuf\fP が NULL でない」 という場合である。 この場合、
46 \fBiconv\fP()  関数は、 \fI*inbuf\fP で始まるマルチバイト文字列を \fI*outbuf\fP で始まるマルチバイト文字列に変換する。
47 \fI*inbuf\fP を先頭として最大 \fI*inbytesleft\fP バイトが読み込まれ、 \fI*outbuf\fP を先頭として最大
48 \fI*outbytesleft\fP バイトが書き出される。
49 .PP
50 \fBiconv\fP()  関数は 1 度に 1 つのマルチバイト文字を変換する。 そして、各文字変換毎に、変換された入力バイトの数だけ \fI*inbuf\fP
51 を増加させ、\fI*inbytesleft\fP を減少させる。 また、変換された出力バイトの数だけ \fI*outbuf\fP
52 を増加させ、\fI*outbytesleft\fP を減少させる。 さらに、\fIcd\fP に含まれる変換状態を更新する。
53 入力の文字エンコーディングがが状態を持つ場合、 \fBiconv\fP()  関数は入力バイトの列に対して変換にも対応しており、
54 バイト出力を伴わずに変換状態を更新することができる。 変換は、次の 4 つの場合に停止する。
55 .IP 1. 3
56 入力に無効なマルチバイト文字列があった場合。この場合、
57 関数は \fIerrno\fP を \fBEILSEQ\fP に設定し、 \fI(size_t)\ \-1\fP を返す。
58 \fI*inbuf\fP は、無効なマルチバイト文字列の先頭を指したままになる。
59 .IP 2.
60 入力バイト文字列が完全に変換され、\fI*inbytesleft\fP が 0 になった場合。
61 この場合、 \fBiconv\fP() は呼出しの間に非可逆変換が行われた回数を返す。
62 .IP 3.
63 入力に不完全なマルチバイト文字列があり、入力バイト文字列がその後で終了
64 している場合。この場合、関数は、\fIerrno\fP を \fBEINVAL\fP に設定し、
65 \fI(size_t)\ \-1\fP を返す。 \fI*inbuf\fP は、不完全なマルチバイト文字列の先頭
66 を指したままにされる。
67 .IP 4.
68 出力バッファーに次の変換された文字列のための空きがない場合。 この場合、
69 \fIerrno\fP が \fBE2BIG\fP に設定され、 \fI(size_t)\ \-1\fP が返される。
70 .PP
71 別のケースとしては、 「\fIinbuf\fP が NULL、または \fI*inbuf\fP が NULL である。 しかし、\fIoutbuf\fP が NULL
72 でなく、かつ \fI*outbuf\fP が NULL でない」 という場合がある。 この場合、 \fBiconv\fP()  関数は、\fIcd\fP
73 の変換状態を初期状態にして、 対応するシフト文字列を \fI*outbuf\fP に保存しようとする。 最大 \fI*outbytesleft\fP
74 バイトが、\fI*outbuf\fP を始めとして書き出される。 このリセットされた文字列に対して、出力バッファーに空きがない場合、 この関数は
75 \fIerrno\fP を \fBE2BIG\fP に設定し、 \fI(size_t)\ \-1\fP を返す。 それ以外の場合、この関数は、書き込まれたバイトの数だけ
76 \fI*outbuf\fP を増加させ、\fI*outbytesleft\fP を減少させる。
77 .PP
78 3 番目のケースしては、 「\fIinbuf\fP が NULL、または \fI*inbuf\fP が NULL である。 かつ、\fIoutbuf\fP が
79 NULL、または \fI*outbuf\fP が NULL である」 という場合がある。 この場合、 \fBiconv\fP()  関数は、\fIcd\fP
80 の変換状態を初期状態にする。
81 .SH 返り値
82 \fBiconv\fP()  関数は、呼出しの間に非可逆な方法で変換された文字数を返す。 つまり、可逆変換はカウントされない。 エラーの場合、この関数は
83 \fIerrno\fP を設定し、 \fI(size_t)\ \-1\fP を返す。
84 .SH エラー
85 他のいろいろなエラーのうちから、以下のエラーが起こりうる。
86 .TP 
87 \fBE2BIG\fP
88 \fI*outbuf\fP に十分な空きがない。
89 .TP 
90 \fBEILSEQ\fP
91 入力に無効なマルチバイト文字列があった。
92 .TP 
93 \fBEINVAL\fP
94 入力に不完全なマルチバイト文字列があった。
95 .SH バージョン
96 この関数はバージョン 2.1 以降の glibc で利用可能である。
97 .SH 準拠
98 POSIX.1\-2001.
99 .SH 注意
100 \fIinbuf\fP と \fIoutbuf\fP は \fIchar\ **\fP 型だが、これらの変数が指す
101 オブジェクトが C の文字列、つまり文字の配列として解釈されることを意味
102 するわけではない。文字バイトシーケンスの解釈は変換関数の内部で行われる。
103 エンコーディングによっては、バイト 0 もマルチバイト文字の有効な
104 構成要素の場合がある。
105
106 \fBiconv\fP() の呼び出し元は、 \fBiconv\fP() に渡すポインタが、
107 必要な文字集合の文字にアクセスするのに適したものとなっていることを
108 保証しなければならない。これには、アライメントに関して厳しい制限が
109 あるプラットフォームにおいて正しいアライメントになっていることを
110 保証するといったことも含まれる。
111 .SH 関連項目
112 \fBiconv_close\fP(3), \fBiconv_open\fP(3)
113 .SH この文書について
114 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
115 である。プロジェクトの説明とバグ報告に関する情報は
116 http://www.kernel.org/doc/man\-pages/ に書かれている。