캐릭터 토토 결과에서 지원을 설정합니다postgresql텍스트를 a에 저장할 수 있습니다 단일 바이트 문자 토토 결과를 포함한 다양한 문자 토토 결과 ISO 8859 시리즈 및 다중 바이트 문자 토토 결과와 같은 처럼EUC(확장 유닉스 코드), UTF-8 및 뮬 내부 코드. 지원되는 모든 캐릭터 토토 결과는 할 수 있습니다 고객이 투명하게 사용하지만 일부는 지원되지 않습니다. 서버 내에서 사용합니다 (즉, 서버 측 인코딩). 그만큼 기본 문자 세트가 선택 중에 선택됩니다PostgreSQL데이터베이스 클러스터 사용initdb. 언제든지 재정의 할 수 있습니다 데이터베이스를 만들므로 각각 여러 데이터베이스를 가질 수 있습니다. 다른 캐릭터 토토 결과로.
표 21-1쇼 에서 사용할 수있는 문자 토토 결과PostgreSQL.
표 21-1.PostgreSQL캐릭터 토토 결과
이름 | 설명 | 언어 | Server? | 바이트/char | 별칭 |
---|---|---|---|---|---|
big5 | Big Five | 전통 중국어 | 아니오 | 1-2 | Win950, Windows950 |
euc_cn | 확장 UNIX 코드 -CN | 단순화 된 중국어 | 예 | 1-3 | |
euc_jp | 확장 UNIX 코드 -JP | 일본어 | 예 | 1-3 | |
EUC_KR | 확장 유닉스 코드 -KR | 한국어 | 예 | 1-3 | |
EUC_TW | 확장 UNIX Code-TW | 전통 중국어, 대만 | 예 | 1-3 | |
GB18030 | 국가 표준 | 중국어 | 아니오 | 1-2 | |
GBK | 확장 된 국가 표준 | 단순화 된 중국어 | 아니오 | 1-2 | Win936, Windows936 |
ISO_8859_5 | ISO 8859-5,ecma 113 | 라틴/사이릴 | 예 | 1 | |
ISO_8859_6 | ISO 8859-6,ECMA 114 | 라틴/아랍어 | 예 | 1 | |
ISO_8859_7 | ISO 8859-7,ecma 118 | 라틴/그리스어 | 예 | 1 | |
ISO_8859_8 | ISO 8859-8,ecma 121 | 라틴/히브리어 | 예 | 1 | |
Johab | Johab | 한국 (Hangul) | 예 | 1-3 | |
KOI8 | Koi8-r (u) | Cyrillic | 예 | 1 | Koi8R |
latin1 | ISO 8859-1,ecma 94 | 서유럽 | 예 | 1 | ISO88591 |
latin2 | ISO 8859-2,ecma 94 | 중앙 유럽 | 예 | 1 | ISO88592 |
latin3 | ISO 8859-3,ecma 94 | 남부 유럽 | 예 | 1 | ISO88593 |
latin4 | ISO 8859-4,ecma 94 | 북유럽 | 예 | 1 | ISO88594 |
latin5 | ISO 8859-9,ecma 128 | 터키 | 예 | 1 | ISO88599 |
latin6 | ISO 8859-10,ecma 144 | Nordic | 예 | 1 | ISO885910 |
latin7 | ISO 8859-13 | Baltic | 예 | 1 | ISO885913 |
latin8 | ISO 8859-14 | Celtic | 예 | 1 | ISO885914 |
latin9 | ISO 8859-15 | 유로 및 악센트가있는 Latin1 | 예 | 1 | ISO885915 |
latin10 | ISO 8859-16,asroSR 14111 | 루마니아어 | 예 | 1 | ISO885916 |
mule_internal | 뮬 내부 코드 | 다국어 EMACS | 예 | 1-4 | |
sjis | Shift JIS | 일본어 | 아니오 | 1-2 | MSKANJI, Shiftjis, Win932, Windows932 |
SQL_ASCII | 지정되지 않은 (텍스트 참조) | any | 예 | 1 | |
UHC | Unified Hangul 코드 | 한국어 | 아니요 | 1-2 | Win949, Windows949 |
UTF8 | 유니 코드, 8 비트 | all | 예 | 1-4 | 유니 코드 |
Win866 | Windows CP866 | 사이릴 릭 | 예 | 1 | alt |
Win874 | Windows CP874 | 타이 | 예 | 1 | |
Win1250 | Windows CP1250 | 중앙 유럽 | 예 | 1 | |
Win1251 | Windows CP1251 | Cyrillic | 예 | 1 | WIN |
Win1252 | Windows CP1252 | 서유럽 | 예 | 1 | |
Win1253 | Windows CP1253 | Greek | 예 | 1 | |
Win1254 | Windows CP1254 | 터키 | 예 | 1 | |
Win1255 | Windows CP1255 | 히브리어 | 예 | 1 | |
Win1256 | Windows CP1256 | 아랍어 | 예 | 1 | |
Win1257 | Windows CP1257 | Baltic | 예 | 1 | |
Win1258 | Windows CP1258 | 베트남 | 예 | 1 | ABC, TCVN, TCVN5712, VSCII |
전부는 아닙니다APIS를 모두 지원합니다 나열된 문자 세트. 예를 들어,PostgreSQLJDBC 드라이버는 지원하지 않습니다mule_internal, latin6, latin8및latin10.
theSQL_ASCII설정 동작 다른 설정과는 상당히 다릅니다. 언제 서버 문자 토토 결과는SQL_ASCII, 서버는 ASCII에 따라 바이트 값 0-127 해석을 해석합니다 바이트 값 128-255는 해석되지 않은 것으로 간주됩니다 캐릭터. 인코딩 변환이 수행되지 않습니다 설정은입니다.SQL_ASCII. 따라서 이것은 설정은 특정 인코딩이 인코딩에 대한 무지 선언으로 사용 중입니다. ~ 안에 대부분의 경우 비 ASCII 데이터를 사용하는 경우 사용하려면SQL_ASCII설정, 왜냐하면PostgreSQL비 ASCII를 변환하거나 검증하여 도움을받을 수 없습니다 캐릭터.
initdb기본값을 정의합니다 a에 대한 문자 토토 결과PostgreSQL클러스터. 예를 들어,
initdb -e euc_jp
기본 문자 토토 결과 (인코딩)를로 설정합니다.EUC_JP(일본어의 확장 유닉스 코드). 너 사용할 수 있습니다-encoding대신-e더 긴 옵션을 입력하는 것을 선호하는 경우 문자열. 그렇지 않은 경우-e또는-encoding옵션이 제공됩니다,initdb적절한 결정을 시도합니다 지정된 또는 기본 로케일을 기반으로 사용하기 위해 인코딩.
다른 문자가있는 데이터베이스를 만들 수 있습니다 토토 결과:
createb -e euc_kr Korean
이것은 이름이 지정된 데이터베이스를 생성합니다한국어문자 토토 결과를 사용하는EUC_KR. 이것을 달성하는 또 다른 방법은 사용하는 것입니다 이 SQL 명령 :
'EUC_KR'인코딩으로 데이터베이스 한국어 생성;
데이터베이스의 인코딩은 시스템 카탈로그에 저장됩니다pg_database. 사용하여 볼 수 있습니다 그만큼-l옵션 또는\ l명령PSQL.
$PSQL -L데이터베이스 목록 데이터베이스 | 소유자 | 부호화 --------------+---------+------------------- euc_cn | t-isii | EUC_CN euc_jp | t-isii | EUC_JP euc_kr | t-isii | EUC_KR euc_tw | t-isii | EUC_TW mule_internal | t-isii | mule_internal Postgres | t-isii | EUC_JP 회귀 | t-isii | SQL_ASCII 템플릿 1 | t-isii | EUC_JP 테스트 | t-isii | EUC_JP UTF8 | t-isii | UTF8 (9 줄)
중요 :인코딩을 지정할 수는 있지만 데이터베이스를 원한다면 인코딩을 선택하는 것은 현명하지 않습니다. 그것은 당신이 가진 로케일이 기대하는 것이 아닙니다. 선택된. 그만큼LC_COLLATEandLC_CTYPE설정은 a 특정 인코딩 및 로케일 의존적 작업 (그러한 정렬)로서 호환되지 않는 인코딩.
이 로케일 설정이 냉동되므로initdb, 사용하기위한 명백한 유연성 클러스터의 다른 데이터베이스에서 다른 인코딩은 다음과 같습니다 실제보다 이론적입니다. 아마도 이것들입니다 메커니즘은 향후 버전의에서 재검토 될 것입니다.PostgreSQL.
여러 인코딩을 안전하게 사용하는 한 가지 방법은 로케일C또는posix동안initdb, 따라서 실제 로케일을 비활성화합니다 의식.
PostgreSQL지원 자동 문자는 서버와 클라이언트 간의 변환을 설정합니다 특정 문자 세트 조합. 변환 정보는에 저장됩니다.PG_CONVERSION시스템 카탈로그.PostgreSQL사전 정의 된 일부와 함께 제공됩니다 전환,표 21-2. SQL 명령을 사용하여 새 변환을 만들 수 있습니다변환 생성.
표 21-2. 클라이언트/서버 문자 토토 결과 전환
서버 문자 토토 결과 | 사용 가능한 클라이언트 문자 토토 결과 |
---|---|
big5 | 지원되지 않음 서버 인코딩 |
EUC_CN | EUC_CN, mule_internal, UTF8 |
EUC_JP | EUC_JP, mule_internal, SJIS, UTF8 |
EUC_KR | EUC_KR, mule_internal, UTF8 |
euc_tw | euc_tw, big5, mule_internal, UTF8 |
GB18030 | 지원되지 않음 서버 인코딩 |
GBK | 지원되지 않음 서버 인코딩 |
ISO_8859_5 | ISO_8859_5, KOI8, mule_internal, UTF8, Win866, win1251 |
ISO_8859_6 | ISO_8859_6, UTF8 |
ISO_8859_7 | ISO_8859_7, UTF8 |
ISO_8859_8 | ISO_8859_8, UTF8 |
Johab | Johab, UTF8 |
KOI8 | KOI8, ISO_8859_5, mule_internal, UTF8, Win866, Win1251 |
latin1 | latin1, mule_internal, UTF8 |
latin2 | latin2, mule_internal, UTF8, Win1250 |
latin3 | latin3, mule_internal, UTF8 |
latin4 | latin4, mule_internal, UTF8 |
latin5 | latin5, UTF8 |
latin6 | latin6, UTF8 |
latin7 | latin7, UTF8 |
latin8 | latin8, UTF8 |
latin9 | latin9, UTF8 |
latin10 | latin10, UTF8 |
mule_internal | mule_internal, big5, EUC_CN, EUC_JP, EUC_KR, EUC_TW, ISO_8859_5, KOI8, latin1tolatin4, SJIS, Win866, Win1250, Win1251 |
SJIS | 지원되지 않음 서버 인코딩 |
SQL_ASCII | one (no 변환이 수행됩니다) |
UHC | 지원되지 않음 서버 인코딩 |
UTF8 | 모든 지원 인코딩 |
Win866 | Win866, ISO_8859_5, KOI8, mule_internal, UTF8, Win1251 |
Win874 | Win874, UTF8 |
Win1250 | Win1250, latin2, mule_internal, UTF8 |
Win1251 | Win1251, ISO_8859_5, KOI8, mule_internal, UTF8, Win866 |
Win1252 | Win1252, UTF8 |
Win1253 | Win1253, UTF8 |
Win1254 | Win1254, UTF8 |
Win1255 | Win1255, UTF8 |
Win1256 | Win1256, UTF8 |
Win1257 | Win1257, UTF8 |
Win1258 | Win1258, UTF8 |
자동 문자 설정 변환을 활성화하려면해야합니다 말하다PostgreSQL캐릭터 클라이언트에서 사용하려는 토토 결과 (인코딩). 거기 있습니다 이것을 달성하는 몇 가지 방법 :
사용\ encoding명령에서PSQL. \ encoding클라이언트를 변경할 수 있습니다 즉석에서 인코딩. 예를 들어 인코딩을로 변경하려면SJIS, 유형 :
\ sjis 인코딩
사용libpq기능.\ encoding실제로 호출pqsetclientencoding ()
그 용
목적.
int pqsetclientencoding (pgconn *conn, const char *인코딩);
어디connis 서버 연결 및인코딩원하는 인코딩입니다 사용. 함수가 인코딩을 성공적으로 설정하면 IT를 설정합니다 반환 0, 그렇지 않으면 -1. 이것에 대한 현재 인코딩 연결을 사용하여 연결을 결정할 수 있습니다.
int pqclientencoding (const pgconn *conn);
기호가 아닌 인코딩 ID를 반환합니다. 와 같은 문자열EUC_JP. 변환합니다 인코딩 ID로 인코딩 이름으로 사용할 수 있습니다.
char *pg_encoding_to_char (intencoding_id);
사용set client_encoding to. 이 SQL로 클라이언트 인코딩 설정을 수행 할 수 있습니다. 명령:
set client_encoding set 'value';
또한 표준 SQL 구문을 사용할 수 있습니다이름 설정이 목적은 :
이름 설정 'value';
현재 클라이언트 인코딩 쿼리 :
show client_encoding;
기본 인코딩으로 돌아 가기 :
Reset Client_Encoding;
사용pgclientencoding. 만약 환경 변수pgclientencoding는 클라이언트에 정의되어 있습니다 환경, 해당 클라이언트 인코딩이 자동으로 선택됩니다 서버에 대한 연결이 이루어질 때. (이것은 할 수 있습니다 결과적으로 다른 방법을 사용하여 재정의됩니다 위에서 언급했습니다.)
구성 변수 사용client_encoding. 인 경우client_encoding변수입니다 세트, 해당 클라이언트 인코딩은 a 서버에 대한 연결이 이루어집니다. (이후에는 가능합니다 언급 된 다른 방법을 사용하여 재정의합니다 위에.)
특정 문자의 변환이 불가능한 경우 - 선택했다고 가정 해EUC_JP서버 및latin1클라이언트의 경우 일부 일본인 캐릭터는 표현이 없습니다.latin1- 그러면 오류가 있습니다 보고.
클라이언트 문자 토토 결과가로 정의 된 경우SQL_ASCII, 인코딩 변환이 비활성화되어 있습니다. 서버의 문자 세트에 관계없이 마찬가지로 서버, 사용SQL_ASCII는 현명하지 않습니다 All-ASCII 데이터를 사용하지 않는 한
이것은 다양한 종류에 대해 배우기 시작하기에 좋은 출처입니다. 인코딩 시스템의.
캐릭터에 관한 광범위한 문서 모음 세트, 인코딩 및 코드 페이지.
자세한 설명EUC_JP, EUC_CN, EUC_KR, EUC_TW섹션 3.2에 나타납니다.
유니 코드 컨소시엄의 웹 사이트
UTF-8이 정의됩니다 여기.