iconv_unicode - Unicode 用のコードセット変換
次の表に、iconv(1)、iconv_open(3C)、および cconv_open(3C) の fromcode または tocode パラメータとして使用できる、サポートされている Unicode エンコーディングまたはエンコーディングスキーム (Unicode エンコーディング形式のバイトシリアライズ) の名前と説明を示します。FSS-UTF、UTF8 などの別名もあります。
別名とオプションのバリアントレベルを含む、現在のシステムで使用可能な iconv および cconv 変換を取得するには、iconv(1) のマニュアルページで説明されている iconv -l コマンドを実行します。
正規名と、オプションのバリアントレベルを持つサポートされている別名とのマッピングの詳細は、alias(5) のマニュアルページおよび /usr/lib/iconv/alias ファイルも参照してください。
|
UCS (Universal Character Set) は、Unicode と同じ文字セットを含む ISO/IEC 10646 ファミリの標準を意味します。
BOM とも呼ばれるバイト順マーク (U+FEFF) は、ファイルまたは文字ストリームの先頭にある特殊文字であり、後続文字のバイト順序を示しています。UCS-2、UTF-16、UTF-32、および UCS-4 の各ファイルおよび文字ストリームは通常、そのファイルや文字ストリームで使用されるバイト順序を示す BOM 文字で始まります。
UTF-8 から UTF-8 への変換では、変換は行われずに入力バッファーから出力バッファーにバイトを移動するだけです。この移動中に、不正な文字のチェックが行われて、有害の可能性がある文字バイトが排除されます。このような不正な文字があると変換に失敗します。
UTF-7 (レガシーの 7 ビット Unicode Transformation Format) は、UTF-8、UCS-2、および UCS-4 との間の iconv 変換でのみサポートされています。
UTF-EBCDIC (EBCDIC と互換性のあるレガシーの UTF-8 バリアント) は、UTF-8 との間の iconv 変換でのみサポートされています。
iconv は、Unicode エンコーディングと各種コードセットとの変換もサポートしています。そのようなコードセットのリストには、中国語、日本語、韓国語、およびほかのさまざまな言語向けの ISO 8859 文字セット、EBCDIC コードページ、EUC (Extended Unix Code) および ISO 2022 エンコーディングが含まれます (iconv_extra(7)、iconv_ja(7)、iconv_ko(7)、iconv_zh(7)、iconv_zh_HK(7)、および iconv_zh_TW(7) を参照)。
ソースの文字コード値がターゲットコードセット内の有効な文字にマップできない場合、それは不正な文字または同一でない文字とみなされます。ソースの文字コード値に関する明示的な情報がない場合、iconv コード変換では不正な文字や同一でない文字を判断する際に次の規則を使用します。
ソースの文字コード値がソースコードセットの標準で定義された範囲内にない場合、それは不正な文字とみなされます。ソースの文字コード値がその標準で定義された範囲内にある場合、ソースの文字コード値が有効な範囲内の未定義の場所または予約された場所にマップされる場合でも、同一でない文字とみなされます。同一でない文字は、ターゲットコードセットが Unicode 以外のコードセットである場合は ? (ASCII 互換コードセット内の 0x3f) にマップされ、ターゲットコードセットが Unicode コードセットである場合は Unicode 置換文字 (U+FFFD) にマップされます。
BOM がそれをサポートしているエンコーディングの最初の文字として存在する場合、それは後続の Unicode 文字シーケンスの解釈方法を示します。BOM がそのようなエンコーディングまたは BOM をサポートしていない Unicode エンコーディングの最初の文字でない場合、その BOM 文字 (U+FEFF) はゼロ幅の改行しない空白 (ZWNBSP) として解釈され、Unicode 文字がバイト順序によって解釈される方法に影響しません。
ターゲットコードセットが UCS-2、UTF-16、UTF-32、UCS-4、UCS-2-BIG-ENDIAN、UCS-2-LITTLE-ENDIAN、UTF-16-BIG-ENDIAN、UTF-16-LITTLE-ENDIAN、UCS-4-BIG-ENDIAN、UCS-4-LITTLE-ENDIAN、UTF-32-BIG-ENDIAN、および UTF-32-LITTLE-ENDIAN のいずれかである場合、iconv コード変換の出力バッファーの先頭に BOM 文字が期待されます。
ソースコードセットが UCS-2、UTF-16、UTF-32、または UCS-4 であり、最初の入力文字として BOM 文字が存在しない場合、iconv コード変換に渡される入力バイトストリームでは現在のシステムのバイト順序が想定されます。
変換ライブラリ /usr/lib/iconv (iconv(3C) を参照) では、ライブラリモジュールのファイル名はパーセント記号 (%) で区切られた 2 つの記号要素で構成されます。最初の記号はソースコード、つまり変換対象となるコードセットを示し、2 つめの記号はターゲットコードセット、つまり最初のものが変換されるコードセットを示します。
たとえば、レガシーの UTF-7 コードセットから UTF-8 コードセットに変換するライブラリモジュールのファイル名は UTF-7%UTF-8.so となります。
使用例 2 cconv ライブラリモジュールのファイル名一部の変換では、iconv(3C) は cconv(3C) インタフェースへの呼び出しを行なって変換を実行します。cconv 変換モジュールは、geniconvtbl(1) によって生成された .bt 接尾辞が付いたバイナリテーブルであり、同じ /usr/lib/iconv ライブラリに格納されます。cconv ライブラリモジュールのファイル名は、プラス記号 (+) で区切られたソースコードセットとターゲットコードセットの記号要素で構成されます。cconv 変換は通常、UTF-32 を中間エンコーディングとして使った 2 つの手順で実行されます。
たとえば、日本語 EUC コードセットから UTF-32 コードセットに変換する cconv ライブラリモジュールのファイル名は eucJP+UTF-32.bt となります。
iconv 変換モジュール
geniconvtbl 変換バイナリテーブル
コードセット名の別名テーブルファイル
geniconvtbl(1), iconv(1), cconv(3C), cconv_close(3C), cconv_open(3C), cconvctl(3C), iconv(3C), iconv_close(3C), iconv_open(3C), iconvctl(3C), alias(5), geniconvtbl-cconv(5), iconv_extra(7), iconv_ja(7), iconv_ko(7), iconv_zh(7), iconv_zh_HK(7), iconv_zh_TW(7)
The Unicode Consortium.『The Unicode Standard, Version 6.2.0』、(Mountain View, CA: The Unicode Consortium, 2012 ISBN 978-1-936213-07-8)
Yergeau F.、「UTF-8, a transformation format of Unicode and ISO 10646」、RFC 2044、Alis Technologies、1996 年 10 月
Ohta M.、「Character Sets ISO-10646 and ISO-10646-J-1」、RFC 1815、Tokyo Institute of Technology、1995 年 7 月
Simonson K.、「Character Mnemonics & Character Sets」、RFC 1345、Rationel Almen Planlaegning、1992 年 6 月
Goldsmith D.、および M.Davis、「UTF-7 - A Mail-Safe Transformation Format of Unicode」、RFC 1642、Taligent, Inc.、1994 年 7 月。