20.2. �ַ���֧��

PostgreSQL ������ַ���֧�����ܹ��Ը����ַ����洢�ı��� �������ֽڵ��ַ��������� ISO 8859 ϵ�к� EUC ����չ Unix ���� Extended Unix Code����Unicode �� Mule ���ʱ��롣�����ַ����������ڷ�������͸����ʹ�á� �������ʹ����������������Դ����չ��������ô��ȡ���������Ƿ���ȷ����д�˴��롣�� ȱʡ���ַ�������ʹ�� initdb ��ʼ����� PostgreSQL ���ݿ⼯Ⱥ��ʱ��ѡ��ġ� �����ʹ�� createdb ���� SQL ���� CREATE DATABASE ��ʱ���ǿ��Ը������ȱʡ�ġ���ˣ�������ж�����ݿ⣬ÿ�����в�ͬ���ַ�����

20.2.1. ֧���ַ�������

Table 20-1 ��ʾ�˿������ڷ��������ַ�����

Table 20-1. �������ַ���

��������
SQL_ASCIIASCII
EUC_JP���� EUC
EUC_CN���� EUC
EUC_KR���� EUC
JOHAB���� EUC (Hangle base)
EUC_TW̨�� EUC
UNICODEUnicode(UTF-8)
MULE_INTERNALMule �ڲ�����
LATIN1ISO 8859-1/ECMA 94 ��Latin Alphabet No.1��
LATIN2ISO 8859-2/ECMA 94 ��Latin Alphabet No.2��
LATIN3ISO 8859-3/ECMA 94 ��Latin Alphabet No.3��
LATIN4ISO 8859-4/ECMA 94 ��Latin Alphabet No.4��
LATIN5ISO 8859-9/ECMA 128 ��Latin Alphabet No.5��
LATIN6ISO 8859-10/ECMA 144 ��Latin Alphabet No.6��
LATIN7ISO 8859-13 (Latin Alphabet no.7)
LATIN8ISO 8859-14 (Latin Alphabet no.8)
LATIN9ISO 8859-15 (Latin Alphabet no.9)
LATIN10ISO 8859-16/ASRO SR 14111 (Latin Alphabet no.10)
ISO_8859_5ISO 8859-5/ECMA 113 (Latin/Cyrillic)
ISO_8859_6ISO 8859-6/ECMA 114 (Latin/Arabic)
ISO_8859_7ISO 8859-7/ECMA 118 (Latin/Greek)
ISO_8859_8ISO 8859-8/ECMA 121 (Latin/Hebrew)
KOI8KOI8-R(U)
ALTWindows CP866
WIN874Windows CP874 (Thai)
WIN1250Windows CP1250
WINWindows CP1251
WIN1256Windows CP1256 (Arabic)
TCVNTCVN-5712/Windows CP1258 (Vietnamese)

Important: �� PostgreSQL7.2 ֮ǰ�� LATIN5����ر�ʾ ISO 8859-5 ����˼�� �� 7.2 ��ʼ LATIN5��ʾ ISO8859-9�� �������һ���� 7.1 ����֮ǰ������ʹ���� LATIN5�����ݿ⣬ ������ϣ����ֲ�� 7.2�������Ժ�İ汾���� ��ô�����dz���ϸ��ע������仯��

��������API֧�������г��ı��롣���磬 PostgreSQL JDBC �����Ͳ�֧��MULE_INTERNAL�� LATIN6��LATIN8 �� LATIN10��

20.2.2. �����ַ���

initdb Ϊһ�� PostgreSQL ��Ⱥ����ȱʡ���ַ��������磺

initdb -E EUC_JP

��ȱʡ�ַ�������Ϊ EUC_JP ���������ĵ���չ�� Unix ���룩�� �����ϲ���ó�ѡ�������Ļ���������� --encoding ���� -E�� ���û�и���-E����--encodingѡ� ��ʹ��SQL_ASCII��

����Դ���һ�����Ų�ͬ��������ݿ⣺

createdb -E EUC_KR korean

������һ��ʹ��EUC_KR�ַ��������ֽ� korean �����ݿ⡣ ����һ��ʵ�ַ�����ʹ�� SQL ���

CREATE DATABASE korean WITH ENCODING 'EUC_KR';

���ݿ�ı�������ϵͳ�� pg_database ���һ�� �����ֶ�����ġ� �������psql��-lѡ��� \l�����г���Щ���롣

$ 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
 regression    | t-ishii | SQL_ASCII
 template1     | t-ishii | EUC_JP
 test          | t-ishii | EUC_JP
 unicode       | t-ishii | UNICODE
(9 rows)

Important: ��Ȼ����Ը�һ�����ݿ���������Ҫ���κα��룬��ѡ��һ������ѡ�������һ�µı��뻹�Dz��׵������� LC_COLLATE �� LC_CTYPE ���ð�ʾһ���ض��ı��룬 ��������صIJ��������������ڲ����ݵı�������п��ܲ�������Ľ�����

��Ϊ��Щ�������ö����� initdb ����ģ� �����ڲ�ͬ�����ݿ���ʹ�ò�ͬ�ı�����������۶�������ʵ�� ��Щ���ƺ��п����ڽ����汾�� PostgreSQL �õ��Ľ���

һ����ȫʹ�ö��ֱ���ķ������� initdb ��ʱ�����������Ϊ C ���� POSIX�������ɹر����κ�ʵ�ʵ����������ԡ�

20.2.3. �������Ϳͻ���֮����Զ��ַ���ת��

PostgreSQL ֧��һЩ�����ڷ�������ǰ��֮����Զ�����ת���� ת����Ϣ��ϵͳ�� pg_conversion �д洢�� �����ʹ�� SQL ���� CREATE CONVERSION ����һ���µ�ת���� PostgreSQL����һЩԤ�����ת���������� Table 20-2 ���г���

Table 20-2. �ͻ�/�������ַ���ת��

�������ַ������ÿͻ����ַ���
SQL_ASCIISQL_ASCII, UNICODE, MULE_INTERNAL
EUC_JPEUC_JP, SJIS, UNICODE, MULE_INTERNAL
EUC_CNEUC_CN, UNICODE, MULE_INTERNAL
EUC_KREUC_KR, UNICODE, MULE_INTERNAL
JOHABJOHAB, UNICODE
EUC_TWEUC_TW, BIG5, UNICODE, MULE_INTERNAL
LATIN1LATIN1, UNICODE, MULE_INTERNAL
LATIN2LATIN2, WIN1250, UNICODE, MULE_INTERNAL
LATIN3LATIN3, UNICODE, MULE_INTERNAL
LATIN4LATIN4, UNICODE, MULE_INTERNAL
LATIN5LATIN5, UNICODE
LATIN6LATIN6, UNICODE, MULE_INTERNAL
LATIN7LATIN7, UNICODE, MULE_INTERNAL
LATIN8LATIN8, UNICODE, MULE_INTERNAL
LATIN9LATIN9, UNICODE, MULE_INTERNAL
LATIN10LATIN10, UNICODE, MULE_INTERNAL
ISO_8859_5ISO_8859_5, UNICODE, MULE_INTERNAL, WIN, ALT, KOI8
ISO_8859_6ISO_8859_6, UNICODE
ISO_8859_7ISO_8859_7, UNICODE
ISO_8859_8ISO_8859_8, UNICODE
UNICODE EUC_JP, SJIS, EUC_KR, UHC, JOHAB, EUC_CN, GBK, EUC_TW, BIG5, LATIN1 �� LATIN10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, WIN, ALT, KOI8, WIN1256, TCVN, WIN874, GB18030, WIN1250
MULE_INTERNALEUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, BIG5, LATIN1 �� LATIN5, WIN, ALT, WIN1250 BIG5, ISO_8859_5, KOI8
KOI8ISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL
ALTISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL
WINISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL
WIN874WIN874, UNICODE
WIN1250LATIN2, WIN1250, UNICODE, MULE_INTERNAL
WINISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL
WIN1256WIN1256, UNICODE
TCVNTCVN, UNICODE

Ҫ����Զ��ַ���ת�����ܣ��������� PostgreSQL �����ڿͻ���ʹ�õ��ַ��������룩��������úü��ַ���ʵ�����Ŀ�ġ�

�����޷������ض����ַ�ת�� — ���磬 ��ѡ�ķ�����������EUC_JP�� �ͻ�����LATIN1����ô��Щ�����ַ�����ת����LATIN1����ʱ�� ������LATIN1�ַ�����ʾ����ĸ����ת����Բ������Χ��ʮ�����ƣ���(826C) ������

20.2.4. ��һ���Ķ�

������ѧϰ�������͵ı���ϵͳ�ĺõط���

ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf

��ϸ�ؽ����˵�3.2�ڳ��ֵ�EUC_JP�� EUC_CN��EUC_KR��EUC_TW��

http://www.unicode.org/

Unicode �ļ�Ŀ¼��

RFC 2044

������UTF-8��