문자 집합 지원포스트그레SQL텍스트를 저장할 수 있습니다. 다음을 포함한 다양한 토토 꽁 머니 세트(인코딩이라고도 함) ISO 8859 시리즈와 같은 단일 바이트 문자 집합 및 다음과 같은 다중 바이트 문자 집합EUC(확장 Unix 코드), utf-8 및 Mule 내부 코드. 지원되는 모든 문자 집합을 사용할 수 있습니다. 클라이언트에 의해 투명하게 제공되지만 일부는 사용이 지원되지 않습니다. 서버 내에서(즉, 서버 측 인코딩으로) 는 초기화하는 동안 기본 문자 집합이 선택되었습니다.포스트그레SQL데이터베이스 클러스터 사용 중initdb. 다음과 같은 경우 재정의될 수 있습니다. 데이터베이스를 생성하면 각각 여러 개의 데이터베이스를 가질 수 있습니다. 다른 문자 집합을 사용합니다.
그러나 중요한 제한사항은 각 데이터베이스가 토토 꽁 머니 집합은 서버와 호환되어야 합니다.LC_CTYPE설정. 언제LC_CTYPE이다C또는POSIX, 모든 토토 꽁 머니 집합이 허용되지만 기타 토토 꽁 머니 집합은 허용됩니다. 설정LC_CTYPE단 하나뿐이에요 올바르게 작동하는 토토 꽁 머니 집합입니다. 이후LC_CTYPE설정이 다음에 의해 고정되었습니다.initdb, 다양한 사용이 가능한 명백한 유연성 클러스터의 다른 데이터베이스에서의 인코딩은 더 이론적입니다. 실제보다(선택한 경우 제외)C또는POSIX로케일(따라서 실제 로케일 인식). 아마도 이러한 메커니즘은 다음과 같습니다. 이후 버전에서 재검토됨포스트그레SQL.
표 22-1표시 사용할 수 있는 토토 꽁 머니 집합토토 꽁 머니.
표 22-1.토토 꽁 머니토토 꽁 머니 세트
| 이름 | 설명 | 언어 | 서버? | 바이트/토토 꽁 머니 | 별칭 |
|---|---|---|---|---|---|
| 빅5 | 빅 파이브 | 중국어 번체 | 아니요 | 1-2 | WIN950, Windows950 |
| EUC_CN | 확장 UNIX 코드-CN | 중국어 간체 | 예 | 1-3 | |
| EUC_JP | 확장 UNIX 코드-JP | 일본어 | 예 | 1-3 | |
| EUC_JIS_2004 | 확장 UNIX 코드-JP, JIS X 0213 | 일본어 | 예 | 1-3 | |
| EUC_KR | 확장 UNIX 코드-KR | 한국어 | 예 | 1-3 | |
| EUC_TW | 확장 UNIX 코드-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 | |
| 조하브 | 조하브 | 한국어(한글) | 아니요 | 1-3 | |
| KOI8 | 코이8-R(U) | 키릴 토토 꽁 머니 | 예 | 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 | 북유럽 | 예 | 1 | ISO885910 |
| LATIN7 | ISO 8859-13 | 발트해 | 예 | 1 | ISO885913 |
| LATIN8 | ISO 8859-14 | 켈트족 | 예 | 1 | ISO885914 |
| LATIN9 | ISO 8859-15 | 유로 및 액센트가 있는 LATIN1 | 예 | 1 | ISO885915 |
| LATIN10 | ISO 8859-16,ASROSR 14111 | 루마니아어 | 예 | 1 | ISO885916 |
| MULE_INTERNAL | Mule 내부 코드 | 다국어 Emacs | 예 | 1-4 | |
| SJIS | 시프트 JIS | 일본어 | 아니요 | 1-2 | 므스칸지, ShiftJIS, WIN932, Windows932 |
| SHIFT_JIS_2004 | 시프트 JIS, JIS X 0213 | 일본어 | 아니요 | 1-2 | |
| SQL_ASCII | 지정되지 않음(텍스트 참조) | 아무거나 | 예 | 1 | |
| UHC | 통일한글코드 | 한국어 | 아니요 | 1-2 | WIN949, Windows949 |
| UTF8 | 유니코드, 8비트 | 모두 | 예 | 1-4 | 유니코드 |
| WIN866 | 윈도우 CP866 | 키릴 토토 꽁 머니 | 예 | 1 | ALT |
| WIN874 | 윈도우 CP874 | 태국어 | 예 | 1 | |
| WIN1250 | 윈도우 CP1250 | 중앙 유럽 | 예 | 1 | |
| WIN1251 | 윈도우 CP1251 | 키릴 토토 꽁 머니 | 예 | 1 | 승리 |
| WIN1252 | 윈도우 CP1252 | 서유럽어 | 예 | 1 | |
| WIN1253 | 윈도우 CP1253 | 그리스어 | 예 | 1 | |
| WIN1254 | 윈도우 CP1254 | 터키어 | 예 | 1 | |
| WIN1255 | 윈도우 CP1255 | 히브리어 | 예 | 1 | |
| WIN1256 | 윈도우 CP1256 | 아랍어 | 예 | 1 | |
| WIN1257 | 윈도우 CP1257 | 발트해 | 예 | 1 | |
| WIN1258 | 윈도우 CP1258 | 베트남어 | 예 | 1 | ABC, TCVN, TCVN5712, VSCII |
모두는 아님APIs는 모두 지원합니다 나열된 토토 꽁 머니 세트. 예를 들어,포스트그레SQLJDBC 드라이버는 지원하지 않습니다.MULE_INTERNAL, LATIN6, LATIN8및LATIN10.
그SQL_ASCII설정이 작동함 다른 설정과는 상당히 다릅니다. 때 서버 토토 꽁 머니 집합은SQL_ASCII, 서버는 ASCII에 따라 바이트 값 0-127을 해석합니다. 표준이며 바이트 값 128-255는 해석되지 않은 것으로 간주됩니다. 문자. 인코딩 변환은 다음과 같은 경우 수행되지 않습니다. 설정은SQL_ASCII. 따라서 이 설정은 특정 인코딩을 선언하는 것이 아닙니다. 인코딩에 대한 무지 선언으로 사용 중입니다. 에서 대부분의 경우 ASCII가 아닌 데이터로 작업하는 경우 를 사용하는 것은 현명하지 못하다.SQL_ASCII설정, 왜냐하면토토 꽁 머니될 것이다 비ASCII로 변환하거나 유효성을 검사하는 데 도움을 드릴 수 없습니다. 문자.
initdb기본값을 정의합니다. a에 대한 토토 꽁 머니 집합토토 꽁 머니클러스터. 예를 들어,
initdb -E EUC_JP
기본 문자 집합(인코딩)을 다음으로 설정합니다.EUC_JP(일본어용 확장 Unix 코드). 당신 사용할 수 있습니다--인코딩대신에-E더 긴 옵션을 입력하려는 경우 토토 꽁 머니열. 그렇지 않은 경우-E또는--인코딩옵션이 주어졌습니다.initdb적절한 결정을 시도합니다. 지정된 또는 기본 로케일을 기반으로 사용할 인코딩입니다.
선택한 경우C또는POSIX로케일, 당신은 다른 토토 꽁 머니 집합을 가진 데이터베이스:
createdb -E EUC_KR 한국어
이렇게 하면 다음 이름의 데이터베이스가 생성됩니다.한국어토토 꽁 머니 집합을 사용하는EUC_KR. 이를 달성하는 또 다른 방법은 다음을 사용하는 것입니다. 이 SQL 명령:
'EUC_KR'을 인코딩하여 한국어 데이터베이스 생성;
데이터베이스 인코딩은 시스템 카탈로그에 저장됩니다.pg_database. 이용하시면 보실 수 있습니다-l옵션 또는\l명령psql.
$ psql -l데이터베이스 목록 데이터베이스 | 소유자 | 인코딩 ---------------+---------+--------------- euc_cn | 티이시이 | EUC_CN euc_jp | 티이시이 | EUC_JP euc_kr | 티이시이 | EUC_KR euc_tw | 티이시이 | EUC_TW 노새_내부 | 티이시이 | MULE_INTERNAL 포스트그레스 | 티이시이 | EUC_JP 회귀 | 티이시이 | SQL_ASCII 템플릿1 | 티이시이 | EUC_JP 테스트 | 티이시이 | EUC_JP UTF8 | 티이시이 | UTF8 (9행)
중요:대부분의 최신 운영 체제에서토토 꽁 머니결정할 수 있습니다 어떤 토토 꽁 머니 집합이 에 의해 암시되는지LC_CTYPE설정하면 이를 시행하게 됩니다. 올바른 데이터베이스 인코딩만 사용됩니다. 더 오래된 시스템을 사용하는 것은 귀하의 책임입니다. 선택한 로케일에서 예상되는 인코딩입니다. 에이 이 분야의 실수는 이상한 일로 이어질 가능성이 높습니다. 다음과 같은 로캘 종속 작업의 잘못된 동작 정렬 중입니다.
포스트그레SQL허용하겠습니다 데이터베이스를 생성하는 수퍼유저SQL_ASCII언제라도 인코딩LC_CTYPE아닙니다C또는POSIX. 위에서 언급한 바와 같이,SQL_ASCII데이터가 강제로 실행되지 않습니다. 데이터베이스에 저장된 특정 인코딩이 있으므로 이 선택은 로케일에 따른 오작동의 위험을 초래합니다. 이 설정 조합을 사용하는 것은 더 이상 사용되지 않으며 다음과 같은 경우가 있을 수 있습니다. 언젠가는 완전히 금지될 것입니다.
토토 꽁 머니지원하다 서버와 클라이언트 간의 자동 문자 집합 변환 특정 토토 꽁 머니 세트 조합의 경우. 전환 정보는에 저장됩니다.pg_conversion시스템 카탈로그.토토 꽁 머니미리 정의된 일부가 함께 제공됩니다. 다음과 같이 전환이 발생합니다.표 22-2. SQL 명령을 사용하여 새 변환을 생성할 수 있습니다.전환 생성.
표 22-2. 클라이언트/서버 문자 집합 전환
| 서버 토토 꽁 머니 세트 | 사용 가능한 클라이언트 토토 꽁 머니 세트 |
|---|---|
| 빅5 | 다음으로 지원되지 않음 서버 인코딩 |
| 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, 빅5, 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 |
| 조하브 | 조하브, 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, 빅5, EUC_CN, EUC_JP, EUC_KR, EUC_TW, ISO_8859_5, KOI8, 라틴어1에LATIN4, SJIS, WIN866, WIN1250, WIN1251 |
| SJIS | 지원되지 않음 서버 인코딩 |
| SQL_ASCII | 모두(아니요 변환이 수행됩니다) |
| 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 |
자동 문자 집합 변환을 활성화하려면 다음을 수행해야 합니다. 말하다포스트그레SQL캐릭터 클라이언트에서 사용하려는 설정(인코딩)입니다. 있다 이를 달성하는 몇 가지 방법:
다음을 사용하여\인코딩명령 입력psql. \인코딩클라이언트를 변경할 수 있습니다 즉시 인코딩. 예를 들어 인코딩을 다음으로 변경하려면SJIS, 유형:
\SJIS 인코딩
libpq (섹션 30.9)에는 다음과 같은 기능이 있습니다. 클라이언트 인코딩을 제어합니다.
사용 중클라이언트 인코딩을 다음으로 설정. 클라이언트 인코딩 설정은 이 SQL을 사용하여 수행할 수 있습니다. 명령:
클라이언트_인코딩을 '로 설정값';
또한 표준 SQL 구문을 사용할 수 있습니다.이름 설정이 목적을 위해:
이름 설정 '값';
현재 클라이언트 인코딩을 쿼리하려면:
클라이언트_인코딩 표시;
기본 인코딩으로 돌아가려면:
클라이언트_인코딩 재설정;
사용 중PGCLIENTENCODING. 만약 환경 변수PGCLIENTENCODING클라이언트의 환경에서는 해당 클라이언트 인코딩이 자동으로 선택됩니다. 서버에 연결되면. (이것은 이후에 다른 방법을 사용하여 재정의됩니다. 위에서 언급했습니다.)
구성 변수 사용client_encoding. 만약client_encoding변수는 설정하면 클라이언트 인코딩이 자동으로 선택됩니다. 서버에 연결이 이루어졌습니다. (이것은 이후에 가능합니다. 언급된 다른 방법 중 하나를 사용하여 재정의됨 위.)
특정 토토 꽁 머니의 변환이 불가능한 경우 — 당신이 선택했다고 가정 해 봅시다EUC_JP에 대한 서버 및LATIN1클라이언트의 경우 일부 일본어 문자에는 표현이 없습니다.LATIN1— 그렇다면 오류는 다음과 같습니다. 보고되었습니다.
클라이언트 문자 집합이 다음과 같이 정의된 경우SQL_ASCII, 인코딩 변환이 비활성화되었습니다. 서버의 토토 꽁 머니 집합에 관계없이. 마찬가지로 서버, 사용SQL_ASCII현명하지 못하다 전체 ASCII 데이터로 작업하지 않는 한.
이것들은 다양한 종류에 대해 배우기 시작하는 좋은 자료입니다 인코딩 시스템의.
캐릭터에 관한 광범위한 문서 모음 세트, 인코딩 및 코드 페이지.
자세한 설명EUC_JP, EUC_CN, EUC_KR, EUC_TW섹션 3.2에 나타납니다.
유니코드 컨소시엄 웹사이트
UTF-8이 정의되었습니다. 여기.