캐릭터 세트에서 토토 베이을 설정합니다토토 베이텍스트를 a에 저장할 수 있습니다 다양한 문자 세트 (인코딩이라고도 함)를 포함합니다 ISO 8859 시리즈와 같은 단일 바이트 문자 세트 및 와 같은 다중 바이트 문자 세트EUC(확장 UNIX 코드), UTF-8 및 MULE 내부 코드. 토토 베이되는 모든 문자 세트를 사용할 수 있습니다 고객은 투명하게하지만 일부는 사용을 토토 베이하지 않습니다. 서버 내에서 (즉, 서버 측 인코딩). 그만큼 기본 문자 세트가 선택 중에 선택됩니다토토 베이데이터베이스 클러스터 사용initdb. 언제든지 재정의 할 수 있습니다 데이터베이스를 만들므로 각각 여러 데이터베이스를 가질 수 있습니다. 다른 캐릭터 세트로.
11483_11599LC_CTYPEandlc_collate로케일 설정. 을 위한C또는posix로케일, 모든 문자 세트는 허용되지만 다른 지역의 경우 작동 할 캐릭터 세트는 하나뿐입니다. 바르게. (그러나 Windows에서는 UTF-8 인코딩을 사용할 수 있습니다 모든 로케일.)
표 22-1쇼 에서 사용할 수있는 문자 세트토토 베이.
표 22-1.토토 베이문자 세트
이름 | 설명 | 언어 | 서버? | 바이트/char | 별칭 |
---|---|---|---|---|---|
big5 | Big Five | 전통 중국어 | 아니오 | 1-2 | Win950, Windows950 |
EUC_CN | 확장 UNIX 코드 -CN | 단순화 된 중국어 | 예 | 1-3 | |
EUC_JP | 확장 유닉스 코드 -JP | 일본어 | 예 | 1-3 | |
euc_jis_2004 | 확장 UNIX Code-JP, JIS X 0213 | 일본어 | 예 | 1-3 | |
EUC_KR | 확장 UNIX 코드 -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 | Latin/Cyrillic | 예 | 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 | Korean (Hangul) | 아니오 | 1-3 | |
Koi8R | Koi8-r | 키릴 릭 (러시아어) | 예 | 1 | KOI8 |
Koi8U | Koi8-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 | 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 |
shift_jis_2004 | Shift JIS, JIS X 0213 | 일본어 | 아니오 | 1-2 | |
SQL_ASCII | 불특정 (텍스트 참조) | any | 예 | 1 | |
UHC | Unified Hangul 코드 | 한국어 | 아니오 | 1-2 | Win949, Windows949 |
UTF8 | 유니 코드, 8 비트 | all | 예 | 1-4 | 유니 코드 |
Win866 | Windows CP866 | cyrillic | 예 | 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 모두 나열된 문자 세트. 예를 들어,토토 베이JDBC 드라이버는 토토 베이하지 않습니다mule_internal, latin6, latin8및latin10.
theSQL_ASCII설정 동작 다른 설정과는 상당히 다릅니다. 언제 서버 문자 세트는SQL_ASCII, 서버는 ASCII에 따라 바이트 값 0-127 해석을 해석합니다 바이트 값 128-255는 해석되지 않은 것으로 간주됩니다 캐릭터. 인코딩 변환이 수행되지 않습니다 설정은입니다.SQL_ASCII. 따라서 이것은 설정은 특정 인코딩이 인코딩에 대한 무지 선언으로 사용 중입니다. ~ 안에 대부분의 경우 비 ASCII 데이터를 사용하는 경우 사용하려면SQL_ASCII설정, 왜냐하면토토 베이비 ASCII를 변환하거나 검증하여 도움을받을 수 없습니다 캐릭터.
initdb기본값을 정의합니다 a에 대한 문자 세트토토 베이클러스터. 예를 들어,
initdb -e euc_jp
기본 문자 세트 (인코딩)를로 설정합니다.EUC_JP(일본어의 확장 유닉스 코드). 너 사용할 수 있습니다-encoding대신-e더 긴 옵션을 입력하는 것을 선호하는 경우 문자열. 그렇지 않은 경우-e또는-encoding옵션이 제공됩니다,initdb적절한 결정을 시도합니다 지정된 또는 기본 로케일을 기반으로 사용하기 위해 인코딩.
데이터베이스 생성에서 비 기본 인코딩을 지정할 수 있습니다 인코딩이 다음과 호환되는 경우 시간 선택된 로케일 :
createb -e euc_kr -t template0 ---lc -collate = ko_kr.euckr ---lc-ctype = ko_kr.euckr korean
이것은 이름이 지정된 데이터베이스를 생성합니다한국어문자 세트를 사용하는EUC_KR및 로케일KO_KR. 이것을 달성하는 또 다른 방법은 사용하는 것입니다 이 SQL 명령 :
'euc_kr'lc_collate = 'ko_kr.euckr'lc_ctype = 'ko_kr.euckr'template = template0; 인코딩하여 데이터베이스 한국어 제작 한국 생성
위의 명령에를 지정합니다Template0데이터베이스. 복사 할 때 다른 데이터베이스, 인코딩 및 로케일 설정은 가능하지 않습니다 소스 데이터베이스의 것과 변경되었습니다. 손상된 데이터를 초래합니다. 자세한 내용은 참조섹션 21.3.
데이터베이스의 인코딩은 시스템 카탈로그에 저장됩니다pg_database. 사용하여 볼 수 있습니다 그만큼-l옵션 또는\ l명령PSQL.
$PSQL -L데이터베이스 목록 이름 | 소유자 | 인코딩 | Collation | CType | 액세스 권한 -----------+----------+-----------+-------------+-------------+------------------------------------- clocaledb | Hlinnaka | SQL_ASCII | C | C | EnglishDB | Hlinnaka | UTF8 | en_gb.utf8 | en_gb.utf8 | 일본어 | Hlinnaka | UTF8 | ja_jp.utf8 | ja_jp.utf8 | 한국 | Hlinnaka | euc_kr | ko_kr.euckr | ko_kr.euckr | Postgres | Hlinnaka | UTF8 | fi_fi.utf8 | fi_fi.utf8 | 템플릿 0 | Hlinnaka | UTF8 | fi_fi.utf8 | fi_fi.utf8 | = c/hlinnaka, hlinnaka = ctc/hlinnaka 템플릿 1 | Hlinnaka | UTF8 | fi_fi.utf8 | fi_fi.utf8 | = c/hlinnaka, hlinnaka = ctc/hlinnaka
중요 :대부분의 현대 운영 체제에서토토 베이결정할 수 있습니다 어떤 문자 세트가 묵시록LC_CTYPE설정, 그것은 그것을 시행 할 것입니다 일치하는 데이터베이스 인코딩 만 사용됩니다. 나이가 들었다 시스템 사용을 보장하는 것은 귀하의 책임입니다. 선택한 로케일이 기대하는 인코딩. 에이 이 지역의 실수는 이상하게 이어질 것입니다. 와 같은 로케일 의존적 작업의 오작동 정렬.
토토 베이허용합니다 로 데이터베이스를 만들 수있는 슈퍼업자SQL_ASCII언제도 인코딩LC_CTYPEC또는posix. 위에서 언급했듯이SQL_ASCII데이터를 시행하지 않습니다 데이터베이스에 저장된 특정 인코딩이 있습니다. 이 선택은 로케일 의존적 오해의 위험을 초래합니다. 이 설정 조합을 사용하면 더 이상 사용되지 않습니다 언젠가는 모두 금지되어 있습니다.
토토 베이지원 자동 문자는 서버와 클라이언트 간의 변환을 설정합니다 특정 문자 세트 조합. 변환 정보는에 저장됩니다.PG_CONVERSION시스템 카탈로그.토토 베이사전 정의 된 일부와 함께 제공됩니다 전환,표 22-2. SQL 명령을 사용하여 새 변환을 만들 수 있습니다변환 생성.
표 22-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, 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 |
Johab | Johab, UTF8 |
KOI8R | Koi8R, ISO_8859_5, mule_internal, UTF8, Win866, Win1251 |
Koi8U | Koi8U, UTF8 |
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, Koi8R, latin1tolatin4, SJIS, Win866, Win1250, Win1251 |
SJIS | 토토 베이되지 않음 서버 인코딩 |
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 |
자동 문자 설정 변환을 활성화하려면해야합니다 말하다토토 베이캐릭터 클라이언트에서 사용하려는 세트 (인코딩). 거기 있습니다 이것을 달성하는 몇 가지 방법 :
사용\ encoding명령에서PSQL. \ encoding클라이언트를 변경할 수 있습니다 즉석에서 인코딩. 예를 들어 인코딩을로 변경하려면SJIS, 유형 :
\ sjis 인코딩
libpq(섹션 30.9)는 기능이 있습니다 클라이언트 인코딩 제어.
사용set client_encoding to. 이 SQL로 클라이언트 인코딩 설정을 수행 할 수 있습니다. 명령:
client_encoding set client_encoding to '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이 정의됩니다 여기.