共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)

iconv インタフェース

ネットワーク環境では、通信し合っているシステムのコード・セットと通信のプロトコルによって、ユーザの指定したデータが意味ある方法でリモート・システムに送信されるように、データの変換方法が決定されます。(ユーザ名でなく) ユーザ・データを送信側のコード・セットから受信側のコード・セットに変換したり、プロトコルに準拠するよう 8 ビット・データを 7 ビット形式に変換する必要があります。このことを達成するには一様なインタフェースが必要です。

次の例では、iconv_open()iconv()iconv_close() の使い方を説明し、iconv() インタフェースの使用方法を示しています。この変換を実行するには、 iconv_open() の次に必ず iconv() を続けてください。7 ビット変換および 8 ビット変換という用語は、それぞれ 7 ビット・データと 8 ビット・データの変換エンコーディングの意味で使用します。

送信側と受信側が同じコード・セットを使用している場合
送信側と受信側が異なるコード・セットを使用している場合

locale_codeset は、そのロケールのアプリケーションによって使用されているコード・セットです。nl_langinfo()(CODESET) 関数を使用して現在のロケールに関連付けられたコード・セットを獲得できますが、それは変換名が nl_langinfo()(CODESET) 関数からの戻り値と一致するかどうかは実装に依存します。

表 3-1 に、さまざまな条件のもとで変換を実行する際の iconv() の使用方法を示します。プロトコルによっては他の変換が必要な場合もあります。

表 3-1 変換を実行するための iconv の使用方法

 

同じコード・セットを使用するシステムとの通信 (例: XYZ) 

異なるコード・セットを使用するシステムとの通信、または受信側のコード・セットが不明 

使用する変換 

7 ビット・プロトコル 

8 ビット・プロトコル 

7 ビット・プロトコル 

8 ビット・プロトコル 

コード XYZ 

無効 

最適 

無効 

リモート・コード・セットが不明の場合無効 

7 ビット変換 ISO2022 

OK 

OK 

最適 

OK 

8ビット変換 ISO2022, ISO10646 

無効 1

OK 

無効 

最適 

7 ビットタグなし引用符付き印刷可能な uucode 

OK 

OK 

コード・セットの識別が必要 

コード・セットの識別が必要 

8 ビットタグなし base64 

無効 

OK 

コード・セットの識別が必要 

コード・セットの識別が必要 

  1. 無効とは、選択したコード・セットとプロトコル型には変換エンコーディングは使用すべきでないという意味です。