이 문서는 지원되지 않는 버전의 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문자 세트

이름 설명 언어 서버? 바이트/char 별칭
big5 Big Five 전통 중국어 아니오 1-2 Win950, Windows950
EUC_CN 확장 UNIX 코드 -CN 단순화 된 중국어 1-3
EUC_JP 확장 UNIX 코드 -JP 일본어 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 라틴/사이릴 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
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 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 사이릴 릭 1 WIN
Win1252 Windows CP1252 서유럽 1
Win1256 Windows CP1256 아랍어 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(일본어의 확장 유닉스 코드). 너 사용할 수 있습니다-encodi스포츠 토토대신-e더 긴 옵션을 입력하는 것을 선호하는 경우 문자열. 그렇지 않은 경우-e또는-encodi스포츠 토토옵션이 제공됩니다,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 변환이 수행됩니다)
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
Win1256 Win1256, UTF8
Win1258 Win1258, UTF8

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

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

    \ sjis 인코딩
  • 사용libpq기능.\ encodi스포츠 토토실제로 호출pqsetclientencodi스포츠 토토 ()그 용 목적.

    int pqsetclientencodi스포츠 토토 (pgconn *conn, const char *인코딩);

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

    int pqclientencoding (const pgconn *conn);

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

    char *pg_encoding_to_char (intencodi스포츠 토토_id38799_38804
  • 사용set client_encodi스포츠 토토 to. 이 SQL로 클라이언트 인코딩 설정을 수행 할 수 있습니다. 명령:

    client_encodi스포츠 토토 set client_encodi스포츠 토토 to 'value';

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

    이름 설정 'value';

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

    show client_encodi스포츠 토토;

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

    Reset Client_Encodi스포츠 토토;
  • 사용pgclientencodi스포츠 토토. 만약 환경 변수pgclientencodi스포츠 토토는 클라이언트에 정의되어 있습니다 환경, 해당 클라이언트 인코딩이 자동으로 선택됩니다 서버에 대한 연결이 이루어질 때. (이것은 할 수 있습니다 결과적으로 다른 방법을 사용하여 재정의됩니다 위에서 언급했습니다.)

  • 구성 변수 사용client_encodi스포츠 토토. 인 경우client_encodi스포츠 토토변수입니다 세트, 해당 클라이언트 인코딩은 a 서버에 대한 연결이 이루어집니다. (이후에는 가능합니다 언급 된 다른 방법을 사용하여 재정의합니다 위에.)

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

클라이언트 문자 세트가로 정의 된 경우SQL_ASCII, 인코딩 변환이 비활성화되어 있습니다. 서버의 문자 세트에 관계없이 마찬가지로 서버, 사용SQL_ASCII는 현명하지 않습니다 All-ASCII 데이터를 사용하지 않는 한

21.2.4. 추가 읽기

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

http : //www.i18스포츠 토토urus.com/docs/984813247.html

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

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

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

http : //www.unicode.org/

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

RFC 2044

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