|PostgreSQL Reference Manual - Volume 3 - Server Administration Guide|
by The PostgreSQL Global Development Group
Paperback (6"x9"), 204 pages
RRP £13.95 ($24.95)
Sales of this book support the PostgreSQL project! Get a printed copy>>>
8.2.2 Setting the Character Set
initdb defines the default character set
for a PostgreSQL cluster. For example,
initdb -E EUC_JP
sets the default character set (encoding) to
EUC_JP (Extended Unix Code for Japanese). You
--encoding instead of
-E if you prefer to type longer option strings.
--encoding option is
initdb attempts to determine the appropriate
encoding to use based on the specified or default locale.
You can create a database with a different character set:
createdb -E EUC_KR korean
This will create a database named
uses the character set
EUC_KR. Another way to
accomplish this is to use this SQL command:
CREATE DATABASE korean WITH ENCODING 'EUC_KR';
The encoding for a database is stored in the system catalog
pg_database. You can see that by using the
-l option or the
$ psql -l List of databases Database | Owner | Encoding ---------------+---------+--------------- euc_cn | t-ishii | EUC_CN euc_jp | t-ishii | EUC_JP euc_kr | t-ishii | EUC_KR euc_tw | t-ishii | EUC_TW mule_internal | t-ishii | MULE_INTERNAL postgres | t-ishii | EUC_JP regression | t-ishii | SQL_ASCII template1 | t-ishii | EUC_JP test | t-ishii | EUC_JP utf8 | t-ishii | UTF8 (9 rows)
Important: Although you can specify any encoding you want for a database, it is unwise to choose an encoding that is not what is expected by the locale you have selected. The
LC_CTYPEsettings imply a particular encoding, and locale-dependent operations (such as sorting) are likely to misinterpret data that is in an incompatible encoding.
Since these locale settings are frozen by
initdb, the apparent flexibility to use different encodings in different databases of a cluster is more theoretical than real. It is likely that these mechanisms will be revisited in future versions of PostgreSQL.
One way to use multiple encodings safely is to set the locale to
initdb, thus disabling any real locale awareness.
|ISBN 0954612043||PostgreSQL Reference Manual - Volume 3 - Server Administration Guide||See the print edition|