MULTIBYTE(3) | FreeBSD Library Functions Manual | MULTIBYTE(3) |
名称
multibyte — マルチバイトとワイド文字操作関数ライブラリ
Standard C Library (libc, -lc)解説
中国語のようないくつかの自然な書き言語の基本要素は、単一の C の char でユニークに表現することはできません。 C 標準は、拡張された自然言語のエンコードを処理する 2 つの異なった方法をサポートしています: ワイド文字とマルチバイト文字です。ワイド文字は、各基本要素をタイプ wchar_t の単一のオブジェクトにマップできる内部表現です。マルチバイト文字は、入力と出力に使用され、C の char のシーケンスとして各基本要素をコード化します。個別の基本要素は、マルチバイト文字の 1 つ以上の (最大 MB_LEN_MAX) バイトにマップします。現在のロケール ( setlocale(3)) は、ワイド文字とマルチバイト文字の解釈を管理します。ロケールのカテゴリ LC_CTYPE は、この解釈を明確に制御します。 wchar_t タイプは、すべてのロケールのためのワイド文字表現の最大の値を保持するために十分な幅があります。
マルチバイト文字列は、与えられた表現内で特別のモードから切り替えるための‘シフト’指示子が含まれています。明示的なバイトがシフトを示すために使用されるなら、これらは、個々の文字と認識されませんが、隣接する文字と一緒くたにされます。常に、識別される‘初期’シフト状態があります。いくつかの関数 (例えば、 mblen(3), mbtowc(3) と wctomb(3)) は、内部的に静的なシフト状態を維持しますが、一方他のものは、呼び出し側によって渡された mbstate_t オブジェクトにそれを格納します。シフト状態は、 LC_CTYPE または LC_ALL カテゴリで setlocale(3) への呼び出しの後に未定義です。
処理中の便宜のために、値 0 のワイド文字 (ヌルワイド文字) は、ワイド文字列の終端として認識され、値が 0 の文字 (ヌルバイト) は、マルチバイト文字列の終端として認識されます。ヌルバイトは、マルチバイト文字で許可されません。
C ライブラリは、マルチバイト文字を処理ための次の関数を提供しています:
関数 | 説明 |
mblen(3) | 文字のバイト数を取得する |
mbrlen(3) | 文字のバイト数を取得する (再開始可能) |
mbrtowc(3) | 文字をワイド文字コードに変換する (再開始可能) |
mbsrtowcs(3) | 文字列をワイド文字列に変換する (再開始可能) |
mbstowcs(3) | 文字列をワイド文字列に変換する |
mbtowc(3) | 文字をワイド文字コードに変換する |
wcrtomb(3) | ワイド文字コードを文字に変換する (再開始可能) |
wcstombs(3) | ワイド文字列を文字列に変換する |
wcsrtombs(3) | ワイド文字列を文字列に変換する (再開始可能) |
wctomb(3) | ワイド文字コードを文字に変換する |
関連項目
mklocale(1), setlocale(3), stdio(3), big5(5), euc(5), gb18030(5), gb2312(5), gbk(5), mskanji(5), utf8(5)規格
これらの関数は、 ISO/IEC 9899:1999 (“ISO C99”) に適合しています。April 8, 2004 | FreeBSD |