이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 23.3. 캐릭터 토토 캔 지원버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

22.3. 캐릭터 세트 지원

캐릭터 세트 지원postgresql텍스트를 a에 저장할 수 있습니다 다양한 문자 세트 (인코딩이라고도 함)를 포함합니다 ISO 8859 시리즈와 같은 단일 바이트 문자 세트 및 와 같은 다중 바이트 문자 세트euc(확장 UNIX 코드), UTF-8 및 MULE 내부 코드. 지원되는 모든 문자 세트를 사용할 수 있습니다 고객은 투명하게하지만 일부는 사용을 지원하지 않습니다. 서버 내에서 (즉, 서버 측 인코딩). 기본값 문자 세트는 초기화하는 동안 선택됩니다postgresql데이터베이스 클러스터 사용initdb. a를 만들 때 무시할 수 있습니다 데이터베이스이므로 각각 다른 데이터베이스를 가질 수 있습니다. 캐릭터 세트.

11305_11419LC_CTYPE(캐릭터 분류) 및lc_collate(문자열 정렬 순서) 로케일 설정. 을 위한C또는posix로케일, 모든 캐릭터 세트가 허용되지만 다른 지역의 경우 올바르게 작동하는 하나의 문자 세트입니다. (창문에서 그러나 UTF-8 인코딩은 모든 로케일과 함께 사용할 수 있습니다.)

22.3.1. 지원되는 캐릭터 세트

표 22-1에서 사용할 수있는 문자 세트postgresql.

Table 22-1.postgresql문자 세트

이름 설명 언어 서버? 바이트/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-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
Johab Johab 한국 (Ha토토 베이ul) 아니오 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 Yes 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 Ha토토 베이ul 코드 한국어 아니오 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 Hebrew 1
Win1256 Windows CP1256 아랍어 1
Win1257 Windows CP1257 Baltic 1
Win1258 Windows CP1258 베트남 1 ABC, TCVN, TCVN5712, VSCII

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

theSQL_ASCII설정 동작 다른 설정과는 상당히 다릅니다. 서버시 문자 세트는SQL_ASCII, 서버 ASCII 표준에 따라 바이트 값 0-127 해석 바이트 값 128-255는 해석되지 않은 문자로 간주됩니다. 아니요 설정이 설정되면 인코딩 변환이 수행됩니다.SQL_ASCII. 따라서이 설정은 그리 그리 많지 않습니다 특정 인코딩이 사용 중이라는 선언 인코딩에 대한 무지. 대부분의 경우 일하는 경우 ASCII가 아닌 데이터를 사용하면 사용하는 것은 현명하지 않습니다.SQL_ASCII설정PostgreSQL당신을 도울 수 없습니다 비 ASCII 문자 변환 또는 검증.

22.3.2. 환경 캐릭터 세트

initdb기본 문자를 정의합니다 a set (인코딩)postgresql클러스터. 예를 들어,

initdb -e euc_jp

기본 문자를 설정합니다.EUC_JP(일본어의 확장 유닉스 코드). 당신은 할 수 있습니다 사용-encodi토토 베이대신-e더 긴 옵션 문자열을 선호하는 경우. 그렇지 않은 경우-e또는-encodi토토 베이옵션이 제공됩니다.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데이터베이스. 다른 데이터베이스를 복사 할 때 인코딩 및 로케일 설정은 소스 데이터베이스는 데이터가 손상 될 수 있으므로 데이터베이스가 손상 될 수 있습니다. 을 위한 자세한 정보 참조PostgreSQL : 문서 : 9.3 : 사설 토토 데이터베이스.

데이터베이스의 인코딩은 시스템 카탈로그에 저장됩니다pg_database. 를 사용하여 볼 수 있습니다.PSQL -l옵션 또는 그만큼\ l명령.

$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

중요 :On most modern operati토토 베이 systems,PostgreSQL어떤 문자 세트를 결정할 수 있습니다 에 의해 암시됩니다LC_CTYPE설정 및 IT 일치하는 데이터베이스 인코딩 만 사용되도록 시행합니다. ~에 오래된 시스템 귀하가 사용하는 것은 귀하의 책임입니다. 선택한 로케일에 의해 예상되는 인코딩. 실수 이 지역은 로케일 의존적으로 이상한 행동으로 이어질 것입니다. 정렬과 같은 작업.

postgresql허용합니다 로 데이터베이스를 만들 수있는 슈퍼업자SQL_ASCII언제도 인코딩LC_CTYPEC또는posix. 위에서 언급했듯이SQL_ASCII데이터가 저장된 데이터를 시행하지 않습니다 데이터베이스에는 특정 인코딩이 있으므로이 선택이 제기됩니다. 로케일 의존적 오해의 위험. 이 조합을 사용합니다 설정은 더 이상 사용되지 않으며 언젠가는 모두 금지 될 수 있습니다.

22.3.3. 자동 문자는 서버와 간의 변환을 설정합니다 고객

PostgreSQL자동 지원 문자 세트 서버와 클라이언트 간의 변환 문자 세트 조합. 변환 정보가 저장됩니다 그만큼PG_CONVERSION시스템 카탈로그.PostgreSQL일부와 함께 제공됩니다 미리 정의 된 변환,표 22-2. 너 SQL 명령을 사용하여 새 변환을 생성 할 수 있습니다변환 생성.

표 22-2. 클라이언트/서버 문자 세트 변환

서버 문자 세트 사용 가능한 클라이언트 문자 세트
big5 서버로 지원되지 않습니다 부호화
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, 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 서버로 지원되지 않습니다 부호화
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 서버로 지원되지 않습니다 부호화
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캐릭터 세트 (인코딩) 클라이언트에서 사용하고 싶습니다. 몇 가지가 있습니다 이것을 달성하는 방법 :

  • 사용\ encodi토토 베이명령에서PSQL. \ encodi토토 베이클라이언트 인코딩을 변경할 수 있습니다 파리. 예를 들어 인코딩을로 변경하려면SJIS, 유형 :

    \encoding SJIS
  • libpq(섹션 31.10) 제어 기능이 있습니다 클라이언트 인코딩.

  • 사용set client_encodi토토 베이 to. 환경 클라이언트 인코딩은이 SQL 명령으로 수행 할 수 있습니다.

    client_encodi토토 베이 set client_encodi토토 베이 to 'value';

    또한 표준 SQL 구문을 사용할 수 있습니다세트 이름이 목적은 :

    이름 설정 'value';

    현재 클라이언트 인코딩을 쿼리하려면 :

    show client_encodi토토 베이;

    기본 인코딩으로 돌아 가기 :

    Reset Client_Encodi토토 베이;
  • 사용pgclientencodi토토 베이. 만약 환경 변수pgclientencodi토토 베이IS 클라이언트의 환경에서 정의 된 고객 인코딩은 다음과 같습니다 서버에 대한 연결이 이루어질 때 자동으로 선택됩니다. (다른 방법 중 하나를 사용하여 이후에 재정의 할 수 있습니다. 위에서 언급했습니다.)

  • 구성 변수 사용client_encodi토토 베이. 인 경우client_encodi토토 베이변수가 설정되었고 해당 클라이언트 인코딩이 연결할 때 자동으로 선택됩니다. 서버가 만들어졌습니다. (이는 이후에 어떤 것을 사용하여 우선 할 수 있습니다 위에서 언급 한 다른 방법 중.)

특정 문자의 변환이 불가능한 경우 - 당신이 선택했다고 가정 해EUC_JP서버의 경우 그리고latin1클라이언트 및 일부 표현이없는 일본인 캐릭터가 반환됩니다. 안에latin1- 오류 가보고되었습니다.

클라이언트 문자 세트가로 정의 된 경우SQL_ASCII, 인코딩 변환이 비활성화되어 있습니다. 서버의 문자 세트에 관계없이 서버와 마찬가지로 사용SQL_ASCII당신이 그렇지 않으면 현명하지 않습니다 All-Ascii 데이터 작업.

22.3.4. 더 나아가 독서

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

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

에 대한 자세한 설명을 포함합니다EUC_JP, EUC_CN, EUC_KR, EUC_TW.

http : //www.unicode.org/

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

RFC 3629

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