PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 20. ���� | Fast Forward | Next |
PostgreSQL ������ַ���֧�����ܹ��Ը����ַ����洢�ı��� �������ֽڵ��ַ��������� ISO 8859 ϵ�к� EUC ����չ Unix ���� Extended Unix Code����Unicode �� Mule ���ʱ��롣�����ַ����������ڷ�����������ʹ�á� �������ʹ����������������Դ����չ��������ô��ȡ���������Ƿ���ȷ����д�˴��롣�� ȱʡ���ַ�������ʹ�� initdb ��ʼ����� PostgreSQL ���ݿ⼯Ⱥ��ʱ��ѡ��ġ� �����ʹ�� createdb ���� SQL ���� CREATE DATABASE ��ʱ���ǿ��Ը������ȱʡ�ġ���ˣ�������ж�����ݿ⣬ÿ�����в�ͬ���ַ�����
Table 20-1 ��ʾ�˿������ڷ��������ַ�����
Table 20-1. �������ַ���
���� | ���� |
---|---|
SQL_ASCII | ASCII |
EUC_JP | ���� EUC |
EUC_CN | ���� EUC |
EUC_KR | ���� EUC |
JOHAB | ���� EUC (Hangle base) |
EUC_TW | ̨�� EUC |
UNICODE | Unicode(UTF-8) |
MULE_INTERNAL | Mule �ڲ����� |
LATIN1 | ISO 8859-1/ECMA 94 ��Latin Alphabet No.1�� |
LATIN2 | ISO 8859-2/ECMA 94 ��Latin Alphabet No.2�� |
LATIN3 | ISO 8859-3/ECMA 94 ��Latin Alphabet No.3�� |
LATIN4 | ISO 8859-4/ECMA 94 ��Latin Alphabet No.4�� |
LATIN5 | ISO 8859-9/ECMA 128 ��Latin Alphabet No.5�� |
LATIN6 | ISO 8859-10/ECMA 144 ��Latin Alphabet No.6�� |
LATIN7 | ISO 8859-13 (Latin Alphabet no.7) |
LATIN8 | ISO 8859-14 (Latin Alphabet no.8) |
LATIN9 | ISO 8859-15 (Latin Alphabet no.9) |
LATIN10 | ISO 8859-16/ASRO SR 14111 (Latin Alphabet no.10) |
ISO_8859_5 | ISO 8859-5/ECMA 113 (Latin/Cyrillic) |
ISO_8859_6 | ISO 8859-6/ECMA 114 (Latin/Arabic) |
ISO_8859_7 | ISO 8859-7/ECMA 118 (Latin/Greek) |
ISO_8859_8 | ISO 8859-8/ECMA 121 (Latin/Hebrew) |
KOI8 | KOI8-R(U) |
ALT | Windows CP866 |
WIN874 | Windows CP874 (Thai) |
WIN1250 | Windows CP1250 |
WIN | Windows CP1251 |
WIN1256 | Windows CP1256 (Arabic) |
TCVN | TCVN-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��
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�������ɹر����κ�ʵ�ʵ����������ԡ�
PostgreSQL ֧��һЩ�����ڷ�������ǰ��֮����Զ�����ת���� ת����Ϣ��ϵͳ�� pg_conversion �д洢�� �����ʹ�� SQL ���� CREATE CONVERSION ����һ���µ�ת���� PostgreSQL����һЩԤ�����ת���������� Table 20-2 ���г���
Table 20-2. �ͻ�/�������ַ���ת��
�������ַ��� | ���ÿͻ����ַ��� |
---|---|
SQL_ASCII | SQL_ASCII, UNICODE, MULE_INTERNAL |
EUC_JP | EUC_JP, SJIS, UNICODE, MULE_INTERNAL |
EUC_CN | EUC_CN, UNICODE, MULE_INTERNAL |
EUC_KR | EUC_KR, UNICODE, MULE_INTERNAL |
JOHAB | JOHAB, UNICODE |
EUC_TW | EUC_TW, BIG5, UNICODE, MULE_INTERNAL |
LATIN1 | LATIN1, UNICODE, MULE_INTERNAL |
LATIN2 | LATIN2, WIN1250, UNICODE, MULE_INTERNAL |
LATIN3 | LATIN3, UNICODE, MULE_INTERNAL |
LATIN4 | LATIN4, UNICODE, MULE_INTERNAL |
LATIN5 | LATIN5, UNICODE |
LATIN6 | LATIN6, UNICODE, MULE_INTERNAL |
LATIN7 | LATIN7, UNICODE, MULE_INTERNAL |
LATIN8 | LATIN8, UNICODE, MULE_INTERNAL |
LATIN9 | LATIN9, UNICODE, MULE_INTERNAL |
LATIN10 | LATIN10, UNICODE, MULE_INTERNAL |
ISO_8859_5 | ISO_8859_5, UNICODE, MULE_INTERNAL, WIN, ALT, KOI8 |
ISO_8859_6 | ISO_8859_6, UNICODE |
ISO_8859_7 | ISO_8859_7, UNICODE |
ISO_8859_8 | ISO_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_INTERNAL | EUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, BIG5, LATIN1 �� LATIN5, WIN, ALT, WIN1250 BIG5, ISO_8859_5, KOI8 |
KOI8 | ISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL |
ALT | ISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL |
WIN | ISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL |
WIN874 | WIN874, UNICODE |
WIN1250 | LATIN2, WIN1250, UNICODE, MULE_INTERNAL |
WIN | ISO_8859_5, WIN, ALT, KOI8, UNICODE, MULE_INTERNAL |
WIN1256 | WIN1256, UNICODE |
TCVN | TCVN, UNICODE |
Ҫ����Զ��ַ���ת�����ܣ��������� PostgreSQL �����ڿͻ���ʹ�õ��ַ��������룩��������úü��ַ���ʵ�����Ŀ�ġ�
�� psql ��� \encoding ��� \encoding �����㶯̬�Ŀͻ��˱��롣 ���磬�ѱ���ı�Ϊ SJIS�����룺
\encoding SJIS
ʹ�� libpq ������ \encoding ��������;��ʱ��ʵ�����ǵ��� PQsetClientEncoding()��
int PQsetClientEncoding(PGconn *conn, const char *encoding);
���� conn ���˵����ӣ��� encoding �������õı��롣����������óɹ������� 0������ -1���������ӵĵ�ǰ������������溯����ʾ��
int PQclientEncoding(const PGconn *conn);
��ע����ֻ���ر��� ID���������� EUC_JP �����ı�������ִ��� Ҫ�ѱ��� ID ת��Ϊ������ţ�������ã�
char *pg_encoding_to_char(int encoding_id);
ʹ�� SET client_encoding TO�� ������ SQL �������ÿͻ��˱��룺
SET CLIENT_ENCODING TO 'value';
�㻹���� SQL ���� SET NAMES�������Ŀ�ģ�
SET NAMES 'value';
��ѯ��ǰ�ͻ��˱��룺
SHOW client_encoding;
����ȱʡ���룺
RESET client_encoding;
ʹ�� PGCLIENTENCODING�� ����ڿͻ��˵Ļ����ﶨ���� PGCLIENTENCODING ���������� ��ô�����������������ʱ���Զ�ѡ��ͻ��˱��롣 ���������������������̸�����κ������������ǡ���
ʹ��client_encoding���ñ����� ����� postgresql.conf �������� client_encoding ������ ��ô�������������������֮������ͻ��˱��뽫�Զ�ѡ������������������Ա������ᵽ �������������ǡ���
�����������ض����ַ�ת�� — ���磬 ��ѡ�ķ�����������EUC_JP�� �ͻ�����LATIN1����ô��Щ�����ַ�����ת����LATIN1����ʱ�� ������LATIN1�ַ�����ʾ����ĸ����ת����Բ������Χ��ʮ�����ƣ���(826C) ������
������ѧϰ�������͵ı���ϵͳ�ĺõط���
��ϸ�ؽ����˵�3.2�ڳ��ֵ�EUC_JP�� EUC_CN��EUC_KR��EUC_TW��
Unicode �ļ�Ŀ¼��
������UTF-8��