문자 집합 지원PostgreSQLISO 8859 시리즈와 같은 단일 바이트 문자 집합과 다음과 같은 다중 바이트 문자 집합을 포함하여 다양한 문자 집합(인코딩이라고도 함)으로 텍스트를 저장할 수 있습니다.EUC(확장 Unix 코드), utf-8 및 Mule 내부 코드. 지원되는 모든 문자 집합은 클라이언트에서 투명하게 사용할 수 있지만 일부는 서버 내에서 사용(즉, 서버 측 인코딩으로)이 지원되지 않습니다. 초기화하는 동안 기본 문자 집합이 선택됩니다.PostgreSQL다음을 사용하는 데이터베이스 클러스터initdb. 데이터베이스를 생성할 때 재정의할 수 있으므로 각각 다른 범퍼카 토토 집합을 가진 여러 데이터베이스를 가질 수 있습니다.
그러나 중요한 제한은 각 데이터베이스의 범퍼카 토토 집합이 데이터베이스의 범퍼카 토토 집합과 호환되어야 한다는 것입니다.LC_CTYPE(범퍼카 토토 분류) 및LC_COLLATE(범퍼카 토토열 정렬 순서) 로케일 설정. 에 대한C또는POSIX로케일, 모든 문자 범퍼카 토토가 허용되지만 다른 libc 제공 로케일의 경우 올바르게 작동하는 문자 범퍼카 토토는 하나만 있습니다. (그러나 Windows에서는 utf-8 인코딩을 모든 로케일과 함께 사용할 수 있습니다.) ICU 지원을 구성한 경우 ICU 제공 로케일을 대부분의 서버 측 인코딩과 함께 사용할 수 있지만 전부는 아니지만 사용할 수 있습니다.
표 23.1다음에서 사용할 수 있는 문자 집합을 표시합니다.PostgreSQL.
표 23.1. PostgreSQL문자 범퍼카 토토
| 이름 | 설명 | 언어 | 서버? | 중환자실? | 바이트/범퍼카 토토 | 별칭 |
|---|---|---|---|---|---|---|
빅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-4 | |
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 | |
KOI8R |
코이8-R | 키릴 범퍼카 토토(러시아어) | 예 | 예 | 1 | KOI8 |
KOI8U |
코이8-U | 키릴 범퍼카 토토(우크라이나어) | 예 | 예 | 1 | |
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 | 대체 |
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는 나열된 모든 문자 집합을 지원합니다. 예를 들어,PostgreSQLJDBC 드라이버는 지원하지 않습니다.MULE_INTERNAL, LATIN6, LATIN8및LATIN10.
그SQL_ASCII설정은 다른 설정과 상당히 다르게 동작합니다. 서버 문자셋이 다음과 같은 경우SQL_ASCII, 서버는 ASCII 표준에 따라 바이트 값 0-127을 해석하는 반면, 바이트 값 128-255는 해석되지 않은 문자로 간주됩니다. 설정이 다음과 같은 경우 인코딩 변환이 수행되지 않습니다.SQL_ASCII. 따라서 이 설정은 특정 인코딩이 사용 중이라는 선언이 아니라 인코딩에 대한 무지를 선언하는 것입니다. 대부분의 경우 ASCII가 아닌 데이터로 작업하는 경우를 사용하는 것은 현명하지 않습니다.SQL_ASCII설정 이유는PostgreSQL비ASCII 범퍼카 토토를 변환하거나 확인하는 데 도움을 드릴 수 없습니다.
initdb에 대한 기본 범퍼카 토토 집합(인코딩)을 정의합니다.PostgreSQL클러스터. 예를 들어,
initdb -E EUC_JP
기본 문자 집합을 다음으로 설정합니다.EUC_JP(일본어용 확장 Unix 코드). 당신은 사용할 수 있습니다--인코딩대신에-E더 긴 옵션 범퍼카 토토열을 선호하는 경우. 그렇지 않은 경우-E또는--인코딩옵션이 주어졌습니다.initdb지정된 또는 기본 로케일을 기반으로 사용할 적절한 인코딩을 결정하려고 시도합니다.
인코딩이 선택한 로케일과 호환된다면 데이터베이스 생성 시 기본이 아닌 인코딩을 지정할 수 있습니다:
createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr 한국어
이렇게 하면 다음 이름의 데이터베이스가 생성됩니다.한국어범퍼카 토토 집합을 사용하는EUC_KR및 로케일ko_KR. 이를 수행하는 또 다른 방법은 다음 SQL 명령을 사용하는 것입니다.
'EUC_KR' 인코딩으로 한국어 데이터베이스 생성 LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;
위 명령은 다음을 복사하도록 지정합니다.템플릿0데이터베이스. 다른 데이터베이스를 복사하는 경우 데이터가 손상될 수 있으므로 인코딩 및 로케일 설정을 원본 데이터베이스의 설정에서 변경할 수 없습니다. 자세한 내용은 참조섹션 22.3.
데이터베이스 인코딩은 시스템 카탈로그에 저장됩니다.pg_database. 를 사용하여 볼 수 있습니다.psql -l옵션 또는\l명령.
$ psql -l데이터베이스 목록
이름 | 소유자 | 인코딩 | 데이터 정렬 | 유형 | 액세스 권한
------------+------------+------------+------------+------------+------------+-------------------------
클로케디비 | 린나카 | SQL_ASCII | 다 | 다 |
영어DB | 린나카 | UTF8 | en_GB.UTF8 | en_GB.UTF8 |
일본어 | 린나카 | UTF8 | ja_JP.UTF8 | ja_JP.UTF8 |
한국어 | 린나카 | EUC_KR | ko_KR.euckr | ko_KR.euckr |
포스트그레스 | 린나카 | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 |
템플릿0 | 린나카 | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | =c/hlinnaka,hlinnaka=CTc/hlinnaka
템플릿1 | 린나카 | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | =c/hlinnaka,hlinnaka=CTc/hlinnaka
대부분의 최신 운영 체제에서,PostgreSQL어떤 범퍼카 토토 집합이 암시되는지 결정할 수 있습니다.LC_CTYPE설정하면 일치하는 데이터베이스 인코딩만 사용되도록 강제됩니다. 이전 시스템에서는 선택한 로케일에서 예상하는 인코딩을 사용하는지 확인하는 것은 귀하의 책임입니다. 이 영역의 실수는 정렬과 같은 로캘 종속 작업의 이상한 동작으로 이어질 가능성이 높습니다.
PostgreSQL슈퍼유저가 다음을 사용하여 데이터베이스를 생성할 수 있도록 허용합니다.SQL_ASCII언제라도 인코딩LC_CTYPE아닙니다C또는POSIX. 위에서 언급한 바와 같이,SQL_ASCII은 데이터베이스에 저장된 데이터에 특정 인코딩이 포함되도록 강제하지 않으므로 이 선택은 로케일에 따른 오작동의 위험을 초래합니다. 이 설정 조합의 사용은 더 이상 사용되지 않으며 언젠가는 완전히 금지될 수 있습니다.
PostgreSQL특정 문자 집합 조합에 대해 서버와 클라이언트 간의 자동 문자 집합 변환을 지원합니다. 변환 정보는에 저장됩니다.pg_conversion시스템 카탈로그.PostgreSQL다음과 같이 사전 정의된 변환이 제공됩니다.표 23.2. SQL 명령을 사용하여 새 변환을 생성할 수 있습니다.전환 생성.
표 23.2. 클라이언트/서버 문자 집합 변환
| 서버 문자 범퍼카 토토 | 사용 가능한 클라이언트 문자 범퍼카 토토 |
|---|---|
빅5 |
서버 인코딩으로 지원되지 않음 |
EUC_CN |
EUC_CN, MULE_INTERNAL, UTF8 |
EUC_JP |
EUC_JP, MULE_INTERNAL, SJIS, UTF8 |
EUC_JIS_2004 |
EUC_JIS_2004, SHIFT_JIS_2004, UTF8 |
EUC_KR |
EUC_KR, MULE_INTERNAL, UTF8 |
EUC_TW |
EUC_TW, 빅5, MULE_INTERNAL, UTF8 |
GB18030 |
서버 인코딩으로 지원되지 않음 |
GBK |
서버 인코딩으로 지원되지 않음 |
ISO_8859_5 |
ISO_8859_5, KOI8R, 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 |
조하브 |
서버 인코딩으로 지원되지 않음 |
KOI8R |
KOI8R, ISO_8859_5, MULE_INTERNAL, UTF8, WIN866, WIN1251 |
KOI8U |
KOI8U, UTF8 |
LATIN1 |
라틴어1, 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, KOI8R, LATIN1에LATIN4, SJIS, WIN866, WIN1250, WIN1251 |
SJIS |
서버 인코딩으로 지원되지 않음 |
SHIFT_JIS_2004 |
서버 인코딩으로 지원되지 않음 |
SQL_ASCII |
모두(변환이 수행되지 않음) |
UHC |
서버 인코딩으로 지원되지 않음 |
UTF8 |
지원되는 모든 인코딩 |
WIN866 |
WIN866, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN1251 |
WIN874 |
WIN874, UTF8 |
WIN1250 |
WIN1250, LATIN2, MULE_INTERNAL, UTF8 |
WIN1251 |
WIN1251, ISO_8859_5, KOI8R, 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클라이언트에서 사용하려는 범퍼카 토토 집합(인코딩). 이를 수행하는 방법에는 여러 가지가 있습니다.
다음을 사용하여\인코딩명령 입력psql. \인코딩즉시 클라이언트 인코딩을 변경할 수 있습니다. 예를 들어 인코딩을 다음으로 변경하려면SJIS, 유형:
\SJIS 인코딩
libpq (503 토토 사이트 순위 페치 실패)에는 클라이언트 인코딩을 제어하는 기능이 있습니다.
사용 중클라이언트 인코딩을 다음으로 설정. 클라이언트 인코딩 설정은 다음 SQL 명령을 사용하여 수행할 수 있습니다.
클라이언트_인코딩을 '로 설정값';
또한 표준 SQL 구문을 사용할 수 있습니다.이름 설정이 목적을 위해:
이름 설정 '값';
현재 클라이언트 인코딩을 쿼리하려면:
클라이언트_인코딩 표시;
기본 인코딩으로 돌아가려면:
클라이언트 인코딩 재설정;
사용 중PGCLIENTENCODING. 환경 변수인 경우PGCLIENTENCODING는 클라이언트 환경에 정의되어 있으며, 해당 클라이언트 인코딩은 서버에 연결될 때 자동으로 선택됩니다. (이는 나중에 위에서 언급한 다른 방법을 사용하여 재정의될 수 있습니다.)
구성 변수 사용client_encoding. 만약client_encoding변수가 설정되어 서버에 연결될 때 클라이언트 인코딩이 자동으로 선택됩니다. (이는 나중에 위에서 언급한 다른 방법을 사용하여 재정의될 수 있습니다.)
특정 범퍼카 토토의 변환이 불가능할 경우 — 선택했다고 가정하십시오.EUC_JP서버용 및라틴어1클라이언트의 경우 표현이 없는 일부 일본어 문자가 반환됩니다.LATIN1— 오류가 보고되었습니다.
클라이언트 문자 집합이 다음과 같이 정의된 경우SQL_ASCII, 서버의 범퍼카 토토 집합에 관계없이 인코딩 변환이 비활성화됩니다. 서버와 마찬가지로SQL_ASCII모든 ASCII 데이터로 작업하지 않는 한 현명하지 않습니다.
이것들은 다양한 종류의 인코딩 시스템에 대해 배우기 시작하는 좋은 소스입니다.
다음에 대한 자세한 설명이 포함되어 있습니다.EUC_JP, EUC_CN, EUC_KR, EUC_TW.
유니코드 컨소시엄 웹사이트.
UTF-8(8비트 UCS/유니코드 변환 형식)이 여기에 정의됩니다.