configure で --enable-recode オプションをつけるとこの機能を設定できます。このオプションは以前正式には "キリル文字(訳注:ロシア語で使われる文字)変換サポート"と呼ばれていましたが、それではすべての能力が充分に表現できません。 いかなるシングルバイト文字セットの変換にも使えます。
この方法はデータベースディレクトリ (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 進数、または(0xが付いた)16 進数の値の対で表現されています。
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 アドレスと文字セットのマッピングに基礎を置いているため明らかに制約もあります。同時に同一ホスト上で異なる変換ができません。複数のオペレーティングシステムが存在しているときクライアントホストに起動をかけると不便なこともあります。とはいっても、これらの制約がきつくなく、マルチバイト文字が必要でない場合は簡単で効果のあるソリューションです。