You can set up this feature with the --enable-recode option
to configure. This option was formerly described as
"Cyrillic recode support" which doesn't express all its
power. It can be used for any single-byte character
set recoding.
This method uses a file charset.conf file located in
the database directory (PGDATA). It's a typical
configuration text file where spaces and newlines separate items
and records and # specifies comments. Three keywords with the
following syntax are recognized here:
BaseCharset server_charset
RecodeTable from_charset to_charset file_name
HostCharset host_spec host_charset
BaseCharset defines the encoding of the database server.
All character set names are only used for mapping inside of
charset.conf so you can freely use typing-friendly
names.
RecodeTable records specify translation tables between
server and client. The file name is relative to the
PGDATA directory. The table file format is very
simple. There are no keywords and characters are represented by a
pair of decimal or hexadecimal (0x prefixed) values on single
lines:
char_value translated_char_value
HostCharset records define the client character set by IP
address. You can use a single IP address, an IP mask range starting
from the given address or an IP interval (e.g., 127.0.0.1,
192.168.1.100/24, 192.168.1.20-192.168.1.40).
The charset.conf file is always processed up to the
end, so you can easily specify exceptions from the previous
rules. In the src/data/ directory you will find an
example charset.conf and a few recoding tables.
As this solution is based on the client's IP address and character
set mapping there are obviously some restrictions as well. You
cannot use different encodings on the same host at the same
time. It is also inconvenient when you boot your client hosts into
multiple operating systems. Nevertheless, when these restrictions are
not limiting and you do not need multibyte characters then it is a
simple and effective solution.