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

21.2. 캐릭터 토토 결과 지원

캐릭터 토토 결과에서 지원을 설정합니다postgresql텍스트를 a에 저장할 수 있습니다 단일 바이트 문자 토토 결과를 포함한 다양한 문자 토토 결과 ISO 8859 시리즈 및 다중 바이트 문자 토토 결과와 같은 처럼EUC(확장 유닉스 코드), UTF-8 및 뮬 내부 코드. 지원되는 모든 캐릭터 토토 결과는 할 수 있습니다 고객이 투명하게 사용하지만 일부는 지원되지 않습니다. 서버 내에서 사용합니다 (즉, 서버 측 인코딩). 그만큼 기본 문자 세트가 선택 중에 선택됩니다PostgreSQL데이터베이스 클러스터 사용initdb. 언제든지 재정의 할 수 있습니다 데이터베이스를 만들므로 각각 여러 데이터베이스를 가질 수 있습니다. 다른 캐릭터 토토 결과로.

21.2.1. 지원되는 캐릭터 세트

표 21-1쇼 에서 사용할 수있는 문자 토토 결과PostgreSQL.

표 21-1.PostgreSQL캐릭터 토토 결과

이름 설명 언어 Server? 바이트/char 별칭
big5 Big Five 전통 중국어 아니오 1-2 Win950, Windows950
euc_cn 확장 UNIX 코드 -CN 단순화 된 중국어 1-3
euc_jp 확장 UNIX 코드 -JP 일본어 1-3
EUC_KR 확장 유닉스 코드 -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 라틴/사이릴 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 한국 (Hangul) 1-3
KOI8 Koi8-r (u) Cyrillic 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 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
SQL_ASCII 지정되지 않은 (텍스트 참조) any 1
UHC Unified Hangul 코드 한국어 아니요 1-2 Win949, Windows949
UTF8 유니 코드, 8 비트 all 1-4 유니 코드
Win866 Windows CP866 사이릴 릭 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를 모두 지원합니다 나열된 문자 세트. 예를 들어,PostgreSQLJDBC 드라이버는 지원하지 않습니다mule_internal, latin6, latin8latin10.

theSQL_ASCII설정 동작 다른 설정과는 상당히 다릅니다. 언제 서버 문자 토토 결과는SQL_ASCII, 서버는 ASCII에 따라 바이트 값 0-127 해석을 해석합니다 바이트 값 128-255는 해석되지 않은 것으로 간주됩니다 캐릭터. 인코딩 변환이 수행되지 않습니다 설정은입니다.SQL_ASCII. 따라서 이것은 설정은 특정 인코딩이 인코딩에 대한 무지 선언으로 사용 중입니다. ~ 안에 대부분의 경우 비 ASCII 데이터를 사용하는 경우 사용하려면SQL_ASCII설정, 왜냐하면PostgreSQL비 ASCII를 변환하거나 검증하여 도움을받을 수 없습니다 캐릭터.

21.2.2. 문자 토토 결과 설정

initdb기본값을 정의합니다 a에 대한 문자 토토 결과PostgreSQL클러스터. 예를 들어,

initdb -e euc_jp

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

다른 문자가있는 데이터베이스를 만들 수 있습니다 토토 결과:

createb -e euc_kr Korean

이것은 이름이 지정된 데이터베이스를 생성합니다한국어문자 토토 결과를 사용하는EUC_KR. 이것을 달성하는 또 다른 방법은 사용하는 것입니다 이 SQL 명령 :

'EUC_KR'인코딩으로 데이터베이스 한국어 생성;

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

$PSQL -L데이터베이스 목록
   데이터베이스 |  소유자 |   부호화    
--------------+---------+-------------------
 euc_cn | t-isii | EUC_CN
 euc_jp | t-isii | EUC_JP
 euc_kr | t-isii | EUC_KR
 euc_tw | t-isii | EUC_TW
 mule_internal | t-isii | mule_internal
 Postgres | t-isii | EUC_JP
 회귀 | t-isii | SQL_ASCII
 템플릿 1 | t-isii | EUC_JP
 테스트 | t-isii | EUC_JP
 UTF8 | t-isii | UTF8
(9 줄)

중요 :인코딩을 지정할 수는 있지만 데이터베이스를 원한다면 인코딩을 선택하는 것은 현명하지 않습니다. 그것은 당신이 가진 로케일이 기대하는 것이 아닙니다. 선택된. 그만큼LC_COLLATEandLC_CTYPE설정은 a 특정 인코딩 및 로케일 의존적 작업 (그러한 정렬)로서 호환되지 않는 인코딩.

이 로케일 설정이 냉동되므로initdb, 사용하기위한 명백한 유연성 클러스터의 다른 데이터베이스에서 다른 인코딩은 다음과 같습니다 실제보다 이론적입니다. 아마도 이것들입니다 메커니즘은 향후 버전의에서 재검토 될 것입니다.PostgreSQL.

여러 인코딩을 안전하게 사용하는 한 가지 방법은 로케일C또는posix동안initdb, 따라서 실제 로케일을 비활성화합니다 의식.

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

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

표 21-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, 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
Johab Johab, 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, big5, EUC_CN, EUC_JP, EUC_KR, EUC_TW, ISO_8859_5, KOI8, latin1tolatin4, SJIS, Win866, Win1250, Win1251
SJIS 지원되지 않음 서버 인코딩
SQL_ASCII one (no 변환이 수행됩니다)
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

자동 문자 설정 변환을 활성화하려면해야합니다 말하다PostgreSQL캐릭터 클라이언트에서 사용하려는 토토 결과 (인코딩). 거기 있습니다 이것을 달성하는 몇 가지 방법 :

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

    \ sjis 인코딩
  • 사용libpq기능.\ encoding실제로 호출pqsetclientencoding ()그 용 목적.

    int pqsetclientencoding (pgconn *conn, const char *인코딩);

    어디connis 서버 연결 및인코딩원하는 인코딩입니다 사용. 함수가 인코딩을 성공적으로 설정하면 IT를 설정합니다 반환 0, 그렇지 않으면 -1. 이것에 대한 현재 인코딩 연결을 사용하여 연결을 결정할 수 있습니다.

    int pqclientencoding (const pgconn *conn);

    기호가 아닌 인코딩 ID를 반환합니다. 와 같은 문자열EUC_JP. 변환합니다 인코딩 ID로 인코딩 이름으로 사용할 수 있습니다.

    char *pg_encoding_to_char (intencoding_id);
  • 사용set client_encoding to. 이 SQL로 클라이언트 인코딩 설정을 수행 할 수 있습니다. 명령:

    set client_encoding set '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 데이터를 사용하지 않는 한

21.2.4. 추가 읽기

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

http : //www.i18ngurus.com/docs/984813247.html

캐릭터에 관한 광범위한 문서 모음 세트, 인코딩 및 코드 페이지.

ftp : //ftp.ora.com/pub/examples/nutshell/ujip/cjk/cjk.inf

자세한 설명EUC_JP, EUC_CN, EUC_KR, EUC_TW섹션 3.2에 나타납니다.

http : //www.unicode.org/

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

RFC 2044

UTF-8이 정의됩니다 여기.