23.3.캐릭터 세트 지원#

캐릭터가 지원을 설정하는postgresqlISO 8859 시리즈와 같은 단일 바이트 문자 롤 토토 및와 같은 단일 바이트 문자 롤 토토를 포함하여 다양한 문자 롤 토토 (C |ollation |이라고도 함)에 텍스트를 저장할 수 있습니다.EUC |(확장 UNIX 코드), UTF-8 및 노새 내부 코드. 모든 지원되는 문자 롤 토토는 클라이언트가 투명하게 사용할 수 있지만 몇 가지는 서버 내에서 사용하기 위해 지원되지 않습니다 (즉, 서버 측 인코딩).PostgreSQL데이터베이스 클러스터 사용initdb. 데이터베이스를 만들 때 재정의 할 수 있으므로 다른 문자 롤 토토가 다른 여러 데이터베이스를 가질 수 있습니다..

중요한 제한 사항은 각 데이터베이스의 문자 롤 토토가 데이터베이스와 호환되어야한다는 것입니다.LC |_C |TYPE(캐릭터 분류) 및LC |_C |OLLATE(문자열 정렬 순서) 로케일 설정. 을 위한C |또는posix로케일, 모든 문자 롤 토토가 허용되지만 다른 LIBC |가 제공 한 로케일의 경우 올바르게 작동하는 문자 롤 토토 만 있습니다. (그러나 Windows에서는 UTF-8 C |ollation |을 모든 로케일과 함께 사용할 수 있습니다.) IC |U 지원이 구성된 경우 IC |U 제공된 로케일은 대부분의 서버 측 C |ollation |과 함께 사용할 수 있습니다..

23.3.1.지원되는 문자 롤 토토#

표 23.3postgresql.

표 23.3.PostgreSQL문자 롤 토토

소유자 | 설명 언어 서버? ICU? 바이트/char 별칭
big5 Big Five 전통 중국어 아니오 아니오 1–2 Win950,Windows950
euc_cn 확장 UNIX 코드 -C |N 단순화 된 중국어 1–3
EUC |_JP 확장 UNIX 코드 -JP 일본어 1–3
euc_jis_2004 확장 UNIX Code-JP, JIS X 0213 일본어 아니오 1–3
EUC |_KR 확장 유닉스 코드 -KR | | |어 1–3
euc_tw 확장 UNIX C |ode-TW 전통 중국어, 대만 1–4
GB18030 국가 표준 중국어 아니오 아니오 1–4
gbk 확장 된 국가 표준 단순화 된 중국어 아니오 아니오 1–2 Win936,Windows936
ISO_8859_5 ISO 8859-5,ecma 113 라틴/키릴 1
ISO_8859_6 ISO 8859-6,EC |MA 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
Koi8R Koi8-r 키릴 릭 (러시아어) 1 KOI8
Koi8U Koi8-U 키릴 릭 (우크라이나) 1
latin1 ISO 8859-1,EC |MA 94 서유럽 1 ISO88591
latin2 ISO 8859-2,ecma 94 중앙 유럽 1 ISO88592
latin3 ISO 8859-3,ecma 94 South European 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 C |eltic 1 ISO885914
latin9 ISO 8859-15 유로 및 악센트가있는 Latin1 1 ISO885915
latin10 ISO 8859-16,asroSR 14111 루마니아어 아니오 1 ISO885916
mule_internal 뮬 내부 코드 다국어 EMAC |S 아니오 1–4
SJIS Shift Jis 일본어 아니오 아니오 1–2 MSKANJI,Shiftjis,Win932,Windows932
shift_jis_2004 Shift JIS, JIS X 0213 일본어 아니오 아니오 1–2
SQL_ASCII 지정되지 않은 (텍스트 참조) any 아니오 1
UHC Unified Hangul 코드 | | |어 아니오 아니오 1–2 Win949,Windows949
일본어 | | 유니 코드, 8 비트 all 1–4 유니 코드
Win866 Windows C |P866 C |yrillic 1 alt
Win874 Windows C |P874 타이 아니오 1
Win1250 Windows C |P1250 중앙 유럽 1
Win1251 Windows C |P1251 사이릴 릭 1 WIN
Win1252 Windows C |P1252 서유럽 1
Win1253 Windows C |P1253 Greek 1
Win1254 Windows C |P1254 터키 1
Win1255 Windows C |P1255 히브리어 1
Win1256 Windows C |P1256 아랍어 1
Win1257 Windows C |P1257 Baltic 1
Win1258 Windows C |P1258 베트남 1 ABC |,TC |VN,TC |VN5712,VSCII

모든 클라이언트는 아닙니다APIs는 모든 나열된 문자 롤 토토를 지원합니다. 예를 들어,PostgreSQLJDBC | 드라이버는 지원하지 않습니다mule_internal,latin6,latin8latin10.

theSQL_ASC |II설정은 다른 설정과 상당히 다르게 작동합니다. 서버 문자 롤 토토가있을 때SQL_ASC |II, 서버는 ASCII 표준에 따라 바이트 값 0–127을 해석하는 반면 바이트 값 128–255는 해석되지 않은 문자로 간주됩니다. 설정이있을 때 인코딩 변환이 수행되지 않습니다SQL_ASC |II. 따라서이 설정은 C |ollation |에 대한 무지 선언으로 특정 C |ollation |이 사용되는 선언이 아닙니다.SQL_ASC |II설정 때문에PostgreSQLASC |II가 아닌 문자를 변환하거나 검증하여 도움을 줄 수 없습니다.

23.3.2.문자 롤 토토 설정#

initdba의 기본 문자 롤 토토 (C |ollation |)를 정의합니다.PostgreSQL클러스터. 예를 들어,

initdb -e euc_jp

기본 문자를 설정합니다.EUC |_JP(일본어의 확장 유닉스 코드). 사용할 수 있습니다-encoding대신-e더 긴 옵션 문자열을 선호하는 경우. 그렇지 않은 경우-e또는-encoding옵션이 제공됩니다,initdb지정된 또는 기본 로케일을 기반으로 사용할 적절한 인코딩을 결정하려고 시도합니다.

C |ollation |이 선택한 로케일과 호환되는 경우 데이터베이스 생성 시간에 비 기본 C |ollation |을 지정할 수 있습니다..

createb -e Postgres | | -t template0 ---lc -collate = Postgres | ---lc-ctype = Postgres | korean

이것은 소유자 |이 지정된 데이터베이스를 생성합니다 | | |어문자 롤 토토를 사용하는EUC |_KR및 로케일KO_KR. 이것을 달성하는 또 다른 방법은이 SQL 명령을 사용하는 것입니다 :

'Postgres | |'lc_collate = 'Postgres |'lc_ctype = 'Postgres |'template = template0; C |ollation |으로 데이터베이스  | | |어를 만듭니다.

위의 명령에 복사를 지정하는지Template0데이터베이스. 다른 데이터베이스를 복사 할 때 C |ollation | 및 로케일 설정은 소스 데이터베이스의 설정에서 변경할 수 없습니다. 이로 인해 데이터가 손상 될 수 있습니다.PostgreSQL : 문서 : 17 : 22.3. 템플릿 롤 토토.

데이터베이스 C |ollation |은 시스템 카탈로그에 저장됩니다PG_DATABASE. 를 사용하여 볼 수 있습니다.PSQL -l옵션 또는\ l명령.

$PSQL -L데이터베이스 목록

중요

대부분의 현대 운영 체제에서PostgreSQLLC_CTYPE설정, 일치하는 데이터베이스 C |ollation | 만 사용되도록 시행됩니다. 이전 시스템에서 선택한 로케일에서 예상되는 C |ollation |을 사용하는 것은 귀하의 책임입니다.

PostgreSQLSuperuser가로 데이터베이스를 만들 수 있습니다.SQL_ASCII언제도 C |ollation |​​LC |_C |TYPEC |또는posix. 위에서 언급했듯이SQL_ASCII데이터베이스에 저장된 데이터에 특정 C |ollation |이 있음을 시행하지 않으므로이 선택은 로케일 의존적 오해의 위험을 초래합니다. 이 설정 조합을 사용하면 더 이상 사용되지 않으며 언젠가는 금지 될 수 있습니다.

23.3.3.자동 문자 서버와 클라이언트 간의 변환#

PostgreSQL지원 캐릭터 세트의 많은 조합에 대해 서버와 클라이언트 간의 자동 문자 롤 토토 지원 (섹션 23.3.4어떤 것들을 보여줍니다).

자동 문자 롤 토토 변환을 활성화하려면 말해야합니다PostgreSQL클라이언트에서 사용하려는 문자 롤 토토 (C |ollation |). 이것을 달성하는 몇 가지 방법이 있습니다 :

  • 사용\ encoding명령PSQL.\ encoding클라이언트 인코딩을 즉시 변경할 수 있습니다. 예를 들어 인코딩을로 변경하려면sjis, 유형 :

    \ sjis C |ollation |
  • libpq(스포츠 토토 사이트 : 문서 : 17 : 32.11. 제어 기능) 클라이언트 C |ollation |을 제어하는 ​​기능이 있습니다.

  • 사용set client_encoding to. 이 SQL 명령으로 클라이언트 C |ollation | 설정을 수행 할 수 있습니다.

    client_encoding set client_encoding to 'value';

    표준 SQL 구문을 사용할 수 있습니다이름 설정이 목적은 :

    소유자 | 설정 'value';

    현재 클라이언트 C |ollation | 쿼리 :

    show client_encoding;

    기본 C |ollation |으로 돌아 가기 :

    Reset C |lient_Encoding;
  • 사용pgclientencoding. 환경 변수 인 경우pgclientencoding클라이언트의 환경에서 정의되어 있으며, 해당 클라이언트 C |ollation |은 서버에 대한 연결이 이루어질 때 자동으로 선택됩니다. (위에서 언급 한 다른 방법 중 하나를 사용하여 이후에 재정의 할 수 있습니다.)

  • 구성 변수 사용client_encoding. 인 경우client_encoding변수가 설정되어 있으며 서버에 대한 연결이 이루어질 때 클라이언트 C |ollation |이 자동으로 선택됩니다. (위에서 언급 한 다른 방법 중 하나를 사용하여 이후에 재정의 할 수 있습니다.)

특정 문자의 변환이 불가능한 경우 - 선택했다고 가정 해EUC |_JP서버 및latin1클라이언트의 경우, 일부 일본 문자가 반환됩니다.latin1- 오류 가보고되었습니다.

클라이언트 문자 롤 토토가로 정의 된 경우SQL_ASC |II, 서버의 문자 롤 토토에 관계없이 C |ollation | 변환이 비활성화됩니다. (그러나 서버의 문자 롤 토토가 아닌 경우SQL_ASC |II, 서버는 여전히 들어오는 데이터가 해당 C |ollation |에 유효한지 확인합니다. 따라서 순 효과는 클라이언트 문자 롤 토토가 서버와 동일합니다.) 서버와 마찬가지로SQL_ASC |IIAll-ASC |II 데이터를 사용하지 않는 한 현명하지 않습니다.

23.3.4.사용 가능한 문자 롤 토토 변환#

PostgreSQL변환 함수가 나열된 두 문자 롤 토토 사이의 변환을 허용PG_CONVERSION시스템 카탈로그.PostgreSQL요약 된대로 사전 정의 된 변환이 제공됩니다.표 23.4표 23.5. SQL 명령을 사용하여 새 변환을 만들 수 있습니다변환 생성. (자동 클라이언트/서버 변환에 사용하려면 변환이로 표시되어야합니다.기본값캐릭터 롤 토토 쌍의 경우)

표 23.4.내장 클라이언트/서버 문자 롤 토토 변환

서버 문자 롤 토토 사용 가능한 클라이언트 문자 롤 토토
big5 서버 C |ollation |으로 지원되지 않음
EUC |_C |N EUC |_C |N,mule_internal,UTF8
EUC |_JP EUC_JP,mule_internal,SJIS,UTF8
EUC |_JIS_2004 EUC |_JIS_2004,Shift_jis_2004,일본어 | |
EUC |_KR Postgres | |,mule_internal,일본어 | |
EUC |_TW EUC |_TW,big5,mule_internal,UTF8
GB18030 서버 C |ollation |으로 지원되지 않음
GBK 서버 인코딩으로 지원되지 않음
ISO_8859_5 ISO_8859_5,Koi8R,mule_internal,일본어 | |,Win866,Win1251
ISO_8859_6 ISO_8859_6,UTF8
ISO_8859_7 ISO_8859_7,UTF8
ISO_8859_8 ISO_8859_8,일본어 | |
Johab 서버 C |ollation |으로 지원되지 않음
Koi8R KOI8R,ISO_8859_5,mule_internal,일본어 | |,Win866,Win1251
Koi8U Koi8U,일본어 | |
latin1 latin1,mule_internal,일본어 | |
latin2 latin2,mule_internal,UTF8,Win1250
latin3 latin3,mule_internal,일본어 | |
latin4 latin4,mule_internal,UTF8
latin5 latin5,일본어 | |
latin6 latin6,UTF8
latin7 latin7,일본어 | |
latin8 latin8,UTF8
latin9 latin9,일본어 | |
latin10 latin10,일본어 | |
mule_internal mule_internal,big5,EUC_CN,EUC |_JP,EUC |_KR,EUC |_TW,ISO_8859_5,Koi8R,latin1tolatin4,SJIS,Win866,Win1250,Win1251
SJIS 서버 C |ollation |으로 지원되지 않음
Shift_jis_2004 서버 C |ollation |으로 지원되지 않음
SQL_ASC |II 어떤 것도 (전환되지 않음)
UHC | 서버 C |ollation |으로 지원되지 않음
일본어 | | 모든 지원되는 C |ollation |
Win866 Win866,ISO_8859_5,Koi8R,mule_internal,일본어 | |,Win1251
Win874 Win874,일본어 | |
Win1250 Win1250,latin2,mule_internal,일본어 | |
Win1251 Win1251,ISO_8859_5,Koi8R,mule_internal,일본어 | |,Win866
Win1252 Win1252,일본어 | |
Win1253 Win1253,UTF8
Win1254 Win1254,일본어 | |
Win1255 Win1255,UTF8
Win1256 Win1256,일본어 | |
Win1257 Win1257,일본어 | |
Win1258 Win1258,일본어 | |

표 23.5.모든 내장 문자 롤 토토 변환

변환 소유자 |[A] 소스 C |ollation | 대상 C |ollation |
big5_to_euc_tw big5 EUC |_TW
big5_to_mic big5 mule_internal
big5_to_utf8 big5 일본어 | |
EUC |_C |N_TO_MIC | EUC |_C |N mule_internal
euc_cn_to_utf8 EUC_CN 일본어 | |
euc_jp_to_mic euc_jp mule_internal
euc_jp_to_sjis EUC_JP SJIS
euc_jp_to_utf8 EUC_JP UTF8
EUC |_KR_TO_MIC | EUC |_KR mule_internal
EUC |_KR_TO_일본어 | | EUC |_KR 일본어 | |
euc_tw_to_big5 EUC |_TW big5
euc_tw_to_mic EUC_TW mule_internal
euc_tw_to_utf8 EUC |_TW UTF8
GB18030_TO_일본어 | | GB18030 일본어 | |
gbk_to_utf8 gbk UTF8
ISO_8859_10_TO_일본어 | | latin6 일본어 | |
ISO_8859_13_TO_일본어 | | latin7 일본어 | |
ISO_8859_14_TO_일본어 | | latin8 일본어 | |
ISO_8859_15_TO_UTF8 latin9 일본어 | |
ISO_8859_16_TO_UTF8 latin10 UTF8
ISO_8859_1_TO_MIC | latin1 mule_internal
ISO_8859_1_TO_UTF8 latin1 일본어 | |
ISO_8859_2_TO_MIC | latin2 mule_internal
ISO_8859_2_TO_일본어 | | latin2 일본어 | |
ISO_8859_2_TO_WINDOWS_1250 latin2 Win1250
ISO_8859_3_TO_MIC | latin3 mule_internal
ISO_8859_3_TO_일본어 | | latin3 일본어 | |
ISO_8859_4_TO_MIC | latin4 mule_internal
ISO_8859_4_TO_일본어 | | latin4 UTF8
ISO_8859_5_TO_KOI8_R ISO_8859_5 Koi8R
ISO_8859_5_TO_MIC | ISO_8859_5 mule_internal
ISO_8859_5_TO_일본어 | | ISO_8859_5 일본어 | |
ISO_8859_5_TO_WINDOWS_1251 ISO_8859_5 Win1251
iso_8859_5_to_windows_866 ISO_8859_5 Win866
ISO_8859_6_TO_UTF8 ISO_8859_6 일본어 | |
ISO_8859_7_TO_일본어 | | ISO_8859_7 UTF8
ISO_8859_8_TO_일본어 | | ISO_8859_8 UTF8
ISO_8859_9_TO_일본어 | | latin5 UTF8
johab_to_utf8 Johab 일본어 | |
KOI8_R_TO_ISO_8859_5 KOI8R ISO_8859_5
KOI8_R_TO_MIC | KOI8R mule_internal
KOI8_R_TO_UTF8 KOI8R 일본어 | |
KOI8_R_TO_WINDOWS_1251 KOI8R Win1251
KOI8_R_TO_WINDOWS_866 Koi8R Win866
KOI8_U_TO_일본어 | | Koi8U 일본어 | |
MIC |_TO_BIG5 mule_internal big5
MIC |_TO_EUC |_C |N mule_internal EUC_CN
MIC |_TO_EUC |_JP mule_internal EUC |_JP
MIC_TO_EUC_KR mule_internal EUC |_KR
MIC |_TO_EUC |_TW mule_internal euc_tw
MIC |_TO_ISO_8859_1 mule_internal latin1
MIC |_TO_ISO_8859_2 mule_internal latin2
MIC |_TO_ISO_8859_3 mule_internal latin3
MIC |_TO_ISO_8859_4 mule_internal latin4
MIC |_TO_ISO_8859_5 mule_internal ISO_8859_5
MIC |_TO_KOI8_R mule_internal Koi8R
MIC |_TO_SJIS mule_internal sjis
MIC |_TO_WINDOWS_1250 mule_internal Win1250
MIC |_TO_WINDOWS_1251 mule_internal Win1251
mic_to_windows_866 mule_internal Win866
sjis_to_euc_jp SJIS EUC |_JP
sjis_to_mic SJIS mule_internal
sjis_to_utf8 SJIS UTF8
Windows_1258_TO_일본어 | | Win1258 일본어 | |
uhc_to_utf8 UHC | UTF8
일본어 | |_TO_BIG5 일본어 | | big5
일본어 | |_TO_EUC |_C |N 일본어 | | EUC |_C |N
일본어 | |_TO_EUC |_JP 일본어 | | euc_jp
일본어 | |_TO_EUC |_KR 일본어 | | EUC |_KR
일본어 | |_TO_EUC |_TW UTF8 EUC_TW
일본어 | |_TO_GB18030 UTF8 GB18030
일본어 | |_TO_GBK 일본어 | | GBK
일본어 | |_TO_ISO_8859_1 일본어 | | latin1
일본어 | |_TO_ISO_8859_10 일본어 | | latin6
일본어 | |_TO_ISO_8859_13 UTF8 latin7
일본어 | |_TO_ISO_8859_14 일본어 | | latin8
UTF8_TO_ISO_8859_15 일본어 | | latin9
일본어 | |_TO_ISO_8859_16 UTF8 latin10
UTF8_TO_ISO_8859_2 일본어 | | latin2
일본어 | |_TO_ISO_8859_3 일본어 | | latin3
일본어 | |_TO_ISO_8859_4 일본어 | | latin4
일본어 | |_TO_ISO_8859_5 일본어 | | ISO_8859_5
일본어 | |_TO_ISO_8859_6 일본어 | | ISO_8859_6
일본어 | |_TO_ISO_8859_7 일본어 | | ISO_8859_7
UTF8_TO_ISO_8859_8 일본어 | | ISO_8859_8
일본어 | |_TO_ISO_8859_9 UTF8 latin5
UTF8_TO_JOHAB UTF8 Johab
일본어 | |_TO_KOI8_R 일본어 | | Koi8R
일본어 | |_TO_KOI8_U 일본어 | | Koi8U
UTF8_TO_SJIS 일본어 | | SJIS
일본어 | |_TO_WINDOWS_1258 일본어 | | Win1258
UTF8_TO_UHC 일본어 | | UHC |
일본어 | |_TO_WINDOWS_1250 일본어 | | Win1250
일본어 | |_TO_WINDOWS_1251 UTF8 Win1251
UTF8_TO_WINDOWS_1252 UTF8 win1252
일본어 | |_TO_WINDOWS_1253 UTF8 Win1253
UTF8_TO_WINDOWS_1254 UTF8 Win1254
일본어 | |_TO_WINDOWS_1255 일본어 | | Win1255
일본어 | |_TO_WINDOWS_1256 일본어 | | Win1256
UTF8_TO_WINDOWS_1257 일본어 | | Win1257
일본어 | |_TO_WINDOWS_866 일본어 | | Win866
일본어 | |_TO_WINDOWS_874 일본어 | | Win874
Windows_1250_TO_SO_ISO_8859_2 Win1250 latin2
Windows_1250_TO_MIC Win1250 mule_internal
Windows_1250_TO_일본어 | | Win1250 일본어 | |
Windows_1251_TO_SO_ISO_8859_5 Win1251 ISO_8859_5
Windows_1251_TO_KOI8_R Win1251 KOI8R
Windows_1251_TO_MIC | Win1251 mule_internal
Windows_1251_TO_UTF8 Win1251 일본어 | |
Windows_1251_TO_WINDOWS_866 Win1251 Win866
Windows_1252_TO_일본어 | | Win1252 UTF8
Windows_1256_TO_일본어 | | Win1256 일본어 | |
Windows_866_TO_ISO_8859_5 Win866 ISO_8859_5
Windows_866_TO_KOI8_R Win866 KOI8R
Windows_866_TO_MIC | Win866 mule_internal
Windows_866_TO_일본어 | | Win866 일본어 | |
Windows_866_TO_WINDOWS_1251 Win866 WIN
Windows_874_TO_일본어 | | Win874 일본어 | |
EUC_JIS_2004_TO_UTF8 76451_76465 일본어 | |
UTF8_TO_EUC_JIS_2004 일본어 | | euc_jis_2004
shift_jis_2004_to_utf8 Shift_jis_2004 일본어 | |
일본어 | |_TO_SHIFT_JIS_2004 일본어 | | shift_jis_2004
EUC |_JIS_2004_TO_SHIFT_JIS_2004 EUC |_JIS_2004 Shift_jis_2004
shift_jis_2004_to_euc_jis_2004 shift_jis_2004 EUC_JIS_2004

[a]변환 소유자 |은 표준 소유자 | 지정 체계를 따릅니다._to_, 유사하게 처리 된 대상 인코딩 이름이 뒤 따릅니다. 따라서이 이름은 때때로에 표시된 관례 인코딩 이름에서 벗어납니다.표 23.3.


23.3.5.추가 읽기#

이것은 다양한 종류의 C |ollation | 시스템에 대해 배우기 시작하기에 좋은 출처입니다.

CJKV 정보 처리 : 중국어, 일본어, 한국 및 베트남 컴퓨팅

에 대한 자세한 설명을 포함합니다EUC |_JP,EUC |_C |N,EUC |_KR,EUC |_TW.

https : //www.unicode.org/

유니 코드 컨소시엄의 웹 사이트.

RFC | 3629

UTF-8 (8 비트 UC |S/유니 코드 변환 형식)은 여기에 정의되어 있습니다.

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면