캐릭터 세트 토토 결과postgresql텍스트를 a에 저장할 수 있습니다 단일 바이트 문자 세트를 포함한 다양한 문자 세트 ISO 8859 시리즈 및 다중 바이트 문자 세트와 같은 처럼euc(확장 유닉스 토토 결과), 유니 토토 결과 및 뮬 내부 토토 결과. 모든 문자 세트를 사용할 수 있습니다 서버 전체에 투명하게. (확장자를 사용하는 경우 다른 출처의 기능은 그들이 쓴지 여부에 따라 다릅니다. 그들의 토토 결과가 올바르게.) 기본 문자 세트가 선택됩니다 초기화하는 동안postgresql데이터베이스 클러스터 사용initdb. a를 만들 때 무시할 수 있습니다 사용 사용 데이터베이스createb또는 사용하여 SQL 명령데이터베이스 생성. 그래서 당신은 할 수 있습니다 문자 세트가 다른 여러 데이터베이스가 있습니다.
표 20-1쇼 서버에서 사용할 수있는 문자 세트.
표 20-1. 서버 문자 세트
이름 | 설명 |
---|---|
SQL_ASCII | ASCII |
euc_jp | 일본어EUC |
euc_cn | 중국어EUC |
EUC_KR | 한국어EUC |
Johab | 한국어EUC(행글베이스) |
EUC_TW | 대만EUC |
유니 토토 결과 | 유니 토토 결과 (UTF-8) |
mule_internal | 뮬 내부 토토 결과 |
latin1 | ISO 8859-1/ecma94 (라틴 알파벳 No.1) |
latin2 | ISO 8859-2/ecma94 (라틴 알파벳 No.2) |
latin3 | ISO 8859-3/ECMA94 (라틴 알파벳 No.3) |
latin4 | ISO 8859-4/ECMA94 (라틴 알파벳 No.4) |
latin5 | ISO 8859-9/ECMA128 (라틴 알파벳 No.5) |
latin6 | ISO 8859-10/ecma144 (라틴 알파벳 No.6) |
latin7 | ISO 8859-13 (라틴 알파벳 No.7) |
latin8 | ISO 8859-14 (라틴 알파벳 No.8) |
latin9 | ISO 8859-15 (라틴 알파벳 No.9) |
latin10 | ISO 8859-16/asroSR 14111 (라틴 알파벳 No.10) |
ISO_8859_5 | ISO 8859-5/ecma113 (라틴/키릴) |
ISO_8859_6 | ISO 8859-6/ecma114 (라틴/아랍어) |
ISO_8859_7 | ISO 8859-7/ecma118 (라틴/그리스어) |
ISO_8859_8 | ISO 8859-8/ECMA121 (라틴/히브리어) |
KOI8 | Koi8-R (U) |
alt | Windows CP866 |
Win874 | Windows CP874 (Thai) |
Win1250 | Windows CP1250 |
WIN | Windows CP1251 |
Win1256 | Windows CP1256 (아랍어) |
TCVN | TCVN-5712/Windows CP1258 (베트남 사람) |
중요 :전PostgreSQL 7.2, latin5실수로 ISO 8859-5를 의미했습니다. 7.2에서 에,latin5ISO 8859-9를 의미합니다. 만약에 당신은latin5데이터베이스 생성 7.1 이하로 7.2 이상으로 마이그레이션하고 싶습니다. 이 변화에주의해야합니다.
전부는 아닙니다APIs 모두 나열된 문자 세트. 예를 들어,postgresqlJDBC 드라이버는 토토 결과하지 않습니다mule_internal, latin6, latin8및latin10.
initdb기본값을 정의합니다 a에 대한 문자 세트PostgreSQL클러스터. 예를 들어,
initdb -e euc_jp
기본 문자 세트 (인코딩)를로 설정합니다.EUC_JP(일본어의 확장 유닉스 코드). 너 사용할 수 있습니다-encoding대신-e더 긴 옵션을 입력하는 것을 선호하는 경우 문자열. 그렇지 않은 경우-e또는-encoding옵션이 제공됩니다,SQL_ASCII사용됩니다.
다른 문자가있는 데이터베이스를 만들 수 있습니다 세트:
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 회귀 | t-isii | SQL_ASCII 템플릿 1 | t-isii | EUC_JP 테스트 | t-isii | EUC_JP 유니 토토 결과 | t-isii | 유니 토토 결과 (9 줄)
중요 :인코딩을 지정할 수는 있지만 데이터베이스를 원한다면 인코딩을 선택하는 것은 현명하지 않습니다. 그것은 당신이 가진 로케일이 기대하는 것이 아닙니다. 선택된. 그만큼lc_collateandLC_CTYPE설정은 a 특정 인코딩 및 로케일 의존적 작업 (그러한 정렬)로서 호환되지 않는 인코딩.
이 로케일 설정은 |initdb, 사용하기위한 명백한 유연성 클러스터의 다른 데이터베이스에서 다른 인코딩은 다음과 같습니다 실제보다 이론적입니다. 아마도 이것들입니다 메커니즘은 향후 버전의에서 재검토 될 것입니다.PostgreSQL.
여러 인코딩을 안전하게 사용하는 한 가지 방법은 로케일C또는POSIX동안initdb, 따라서 실제 로케일을 비활성화합니다 의식.
PostgreSQL토토 결과 자동 문자는 서버와 클라이언트 간의 변환을 설정합니다 특정 문자 세트의 경우. 전환 정보는 다음과 같습니다 에 저장PG_CONVERSION시스템 목록. SQL을 사용하여 새 변환을 만들 수 있습니다. 명령변환 생성. PostgreSQL일부와 함께 제공됩니다 사전 정의 된 전환. 그들은에 나열되어 있습니다.테이블 20-2.
표 20-2. 클라이언트/서버 문자 세트 전환
서버 문자 세트 | 사용 가능한 클라이언트 문자 세트 |
---|---|
SQL_ASCII | SQL_ASCII, 유니 토토 결과, mule_internal |
euc_jp | EUC_JP, SJIS, 유니 토토 결과, mule_internal |
EUC_CN | EUC_CN, 유니 토토 결과, mule_internal |
EUC_KR | EUC_KR, 유니 토토 결과, mule_internal |
Johab | Johab, 유니 토토 결과 |
EUC_TW | EUC_TW, big5, 유니 토토 결과, mule_internal |
latin1 | latin1, 유니 토토 결과 mule_internal |
latin2 | latin2, Win1250, 유니 토토 결과, mule_internal |
latin3 | latin3, 유니 토토 결과, mule_internal |
latin4 | latin4, 유니 토토 결과, mule_internal |
latin5 | latin5, 유니 토토 결과 |
latin6 | latin6, 유니 토토 결과, mule_internal |
latin7 | latin7, 유니 토토 결과, mule_internal |
latin8 | latin8, 유니 토토 결과, mule_internal |
latin9 | latin9, 유니 토토 결과, mule_internal |
latin10 | latin10, 유니 토토 결과, mule_internal |
ISO_8859_5 | ISO_8859_5, 유니 토토 결과, mule_internal, WIN, alt, KOI8 |
ISO_8859_6 | ISO_8859_6, 유니 토토 결과 |
ISO_8859_7 | ISO_8859_7, 유니 토토 결과 |
ISO_8859_8 | ISO_8859_8, 유니 토토 결과 |
유니 토토 결과 | EUC_JP, SJIS, EUC_KR, UHC, Johab, EUC_CN, GBK, EUC_TW, big5, latin1tolatin10, 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, latin1tolatin5, WIN, alt, Win1250, big5, ISO_8859_5, KOI8 |
KOI8 | ISO_8859_5, WIN, alt, KOI8, 유니 토토 결과, mule_internal |
alt | ISO_8859_5, WIN, alt, KOI8, 유니 토토 결과, mule_internal |
Win874 | Win874, 유니 토토 결과 |
Win1250 | latin2, Win1250, 유니 토토 결과, mule_internal |
WIN | ISO_8859_5, WIN, alt, KOI8, 유니 토토 결과, mule_internal |
Win1256 | Win1256, 유니 토토 결과 |
TCVN | TCVN, 유니 토토 결과 |
자동 문자 세트 변환을 활성화하려면 말하려면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 to 'value';
또한 표준 SQL 구문을 사용할 수 있습니다이름 설정이 목적은 :
이름 설정 'value';
현재 클라이언트 인코딩을 쿼리하려면 :
show client_encoding;
기본 인코딩으로 돌아 가기 :
Reset Client_Encoding;
사용pgclientencoding. 만약 환경 변수pgclientencoding는 클라이언트에 정의되어 있습니다 환경, 해당 클라이언트 인코딩이 자동으로 선택됩니다 서버에 대한 연결이 이루어질 때. (이것은 할 수 있습니다 결과적으로 다른 방법을 사용하여 재정의됩니다 위에서 언급했습니다.)
구성 변수 사용client_encoding. 인 경우client_encoding변수입니다 세트, 해당 클라이언트 인코딩은 a 서버에 대한 연결이 이루어집니다. (이후에는 가능합니다 언급 된 다른 방법을 사용하여 재정의합니다 위에.)
특정 문자의 변환이 불가능한 경우 - 선택했다고 가정 해EUC_JP서버 및latin1클라이언트의 경우 일부 일본인 캐릭터는로 변환 할 수 없습니다.latin1- 그것은 16 진수로 변환됩니다 괄호 안의 바이트 값 (예 :(826C).
이것은 다양한 종류에 대해 배우기 시작하기에 좋은 출처입니다. 인코딩 시스템의.
자세한 설명EUC_JP, EUC_CN, EUC_KR, EUC_TW섹션 3.2에 나타납니다.
유니 토토 결과 컨소시엄의 웹 사이트
UTF-8이 정의됩니다 여기.