5.3. シングルバイト文字集合のコード変換

この機能は、 --enable-recode を使用することによって設定できます。このオプションは以前は "Cyrillic recode support"という名称でしたが、それでは 機能が十分に表現されませんでした。これはあらゆる シングルバイト文字集合のコード変換に利用できます.

この方法では、データベースのディレクトリ(PGDATA)に あるcharset.confを使用します。このファイルは 一般的なコンフィギュアで、各記録、コメントなどはスペースや改行で 区切られています。3つのキーワードとその後の構文が使われます。

BaseCharset      server_charset
RecodeTable      from_charset to_charset file_name
HostCharset      host_spec    host_charset

BaseCharsetは、データベースサーバのエンコーディングを定義します。 すべての文字セット名はcharset.confでのマッピングの時にしか 使用されないので、入力しやすい名前を自由に使えます。

RecodeTableレコードは、サーバとクライアントとの変換テーブル を特定します。ファイル名はPGDATAディレクトリからの相対になります。 テーブルのファイルの形式はとても簡単です。キーワードはなく、文字は10進数、または 16進数(0xが接頭語)の値の対が各行に書かれています。

char_value   translated_char_value

HostCharsetレコードは、IPアドレスで設定された クライアントの文字を定義します。1つのIPアドレスや、与えられたアドレスからの IPマスクの範囲、IP間隔(127.0.0.1、192.168.1.100/24、192.168.1.20-192.168.1.40など)が 使用できます。

charset.confファイルは必ず最後まで処理されますので、 前述の規則の例外を簡単に特定することができます。 src/data/ディレクトリでは、charset.confの 例と、コードの変換のテーブルが書かれています。

この対策はクライアントのIPアドレスと文字セットのマッピングによるものなので、 制約もいくつかあり、例えば、同時に同じホストで、異ったエンコーディングを 使用することはできません。また、クライアントホストを複数の オペレーティングシステムで起動すると、不便な場合があります。 しかし、これらの制約がきつくなく、マルチバイトサポートが必要でない場合は、 これらはとても有益なものとなります。