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