이 문서는 토토 결과되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 23.3. 캐릭터 토토 캔 지원버전 또는 위에 나열된 다른 토토 결과 버전 중 하나를 사용하세요.

20.2. 문자 세트 토토 결과

문자 집합 토토 결과PostgreSQL텍스트를 저장할 수 있습니다. 단일 바이트 문자 세트를 포함한 다양한 문자 세트 ISO 8859 시리즈와 같은 다중 바이트 문자 집합 처럼EUC(확장 유닉스 토토 결과), 유니토토 결과 및 Mule 내부 토토 결과. 모든 문자 세트를 사용할 수 있습니다. 서버 전체에서 투명하게. (확장 프로그램을 사용하는 경우 다른 소스의 함수는 그들이 작성했는지 여부에 따라 다릅니다. 토토 결과가 정확합니다.) 기본 문자 집합이 선택되었습니다. 초기화하는 동안PostgreSQL다음을 사용하는 데이터베이스 클러스터initdb. 생성할 때 재정의할 수 있습니다. 데이터베이스 사용생성된 DB또는 다음을 사용하여 SQL 명령데이터베이스 생성. 그래서 당신은 할 수 있습니다 각각 다른 문자 집합을 가진 여러 데이터베이스가 있습니다.

20.2.1. 토토 결과되는 캐릭터 세트

표 20-1쇼 서버에서 사용할 수 있는 문자 집합입니다.

표 20-1. 서버 문자 집합

이름 설명
SQL_ASCII ASCII
EUC_JP 일본어EUC
EUC_CN 중국어EUC
EUC_KR 한국어EUC
조하브 한국어EUC(행글 베이스)
EUC_TW 대만EUC
유니토토 결과 유니토토 결과 (UTF-8)
MULE_INTERNAL Mule 내부 토토 결과
LATIN1 ISO 8859-1/ECMA94 (라틴어 알파벳 1번)
LATIN2 ISO 8859-2/ECMA94 (라틴어 알파벳 2번)
LATIN3 ISO 8859-3/ECMA94 (라틴어 알파벳 3번)
LATIN4 ISO 8859-4/ECMA94 (라틴어 알파벳 4번)
LATIN5 ISO 8859-9/ECMA128 (라틴어 알파벳 5번)
LATIN6 ISO 8859-10/ECMA144 (라틴어 알파벳 6번)
LATIN7 ISO 8859-13 (라틴 알파벳 no.7)
LATIN8 ISO 8859-14 (라틴 알파벳 no.8)
LATIN9 ISO 8859-15 (라틴어 알파벳 9번)
LATIN10 ISO 8859-16/ASROSR 14111 (라틴어 알파벳 10번)
ISO_8859_5 ISO 8859-5/ECMA113(라틴어/키릴 문자)
ISO_8859_6 ISO 8859-6/ECMA114(라틴어/아랍어)
ISO_8859_7 ISO 8859-7/ECMA118(라틴어/그리스어)
ISO_8859_8 ISO 8859-8/ECMA121(라틴어/히브리어)
KOI8 코이8-R(U)
ALT 윈도우 CP866
WIN874 Windows CP874(태국어)
WIN1250 윈도우 CP1250
승리 윈도우 CP1251
WIN1256 Windows CP1256(아랍어)
TCVN TCVN-5712/윈도우 CP1258 (베트남 사람)

중요:이전PostgreSQL 7.2, LATIN5잘못된 의미는 ISO 8859-5입니다. 7.2부터 에,LATIN5ISO 8859-9를 의미합니다. 만약에 당신은LATIN5데이터베이스가 생성되었습니다 7.1 이하 버전을 사용 중이고 7.2 이상으로 마이그레이션하려는 경우 이 변경에 주의해야 합니다.

모두는 아님APIs는 모두 토토 결과합니다 나열된 문자 세트. 예를 들어,PostgreSQLJDBC 드라이버는 토토 결과하지 않습니다.MULE_INTERNAL, LATIN6, LATIN8LATIN10.

20.2.2. 문자 집합 설정

initdb기본값을 정의합니다. a에 대한 문자 집합포스트그레SQL클러스터. 예를 들어,

initdb -E EUC_JP

기본 문자 집합(인코딩)을 다음으로 설정합니다.EUC_JP(일본어용 확장 Unix 코드). 너 사용할 수 있습니다--인코딩대신-E더 긴 옵션을 입력하려는 경우 문자열. 그렇지 않은 경우-E또는--인코딩옵션이 주어졌습니다.SQL_ASCII사용됩니다.

다른 문자로 데이터베이스를 생성할 수 있습니다 세트:

createdb -E EUC_KR 한국어

이렇게 하면 다음 이름의 데이터베이스가 생성됩니다.한국어문자 집합을 사용하는EUC_KR. 이를 달성하는 또 다른 방법은 다음을 사용하는 것입니다. 이 SQL 명령:

'EUC_KR'을 인코딩하여 한국어 데이터베이스 생성;

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

$ psql -l데이터베이스 목록
   데이터베이스 |  소유자 |   부호화    
---------------+---------+---------------
 euc_cn | 티이시이 | EUC_CN
 euc_jp | 티이시이 | EUC_JP
 euc_kr | 티이시이 | EUC_KR
 euc_tw | 티이시이 | EUC_TW
 노새_내부 | 티이시이 | MULE_INTERNAL
 회귀 | 티이시이 | SQL_ASCII
 템플릿1 | 티이시이 | EUC_JP
 테스트 | 티이시이 | EUC_JP
 유니토토 결과 | 티이시이 | 유니토토 결과
(9행)

중요:인코딩을 지정할 수 있지만 데이터베이스를 원할 경우 인코딩을 선택하는 것은 현명하지 않습니다. 그것은 당신이 가지고 있는 로케일에서 기대하는 것이 아닙니다. 선택된. 그만큼LC_COLLATE그리고LC_CTYPE설정은 다음을 의미합니다. 특정 인코딩 및 로케일 종속 작업(예: 정렬)에 있는 데이터를 잘못 해석할 가능성이 높습니다. 인코딩이 호환되지 않습니다.

이 로케일 설정은 다음에 의해 고정되었기 때문에initdb, 사용하기 위한 명백한 유연성 클러스터의 서로 다른 데이터베이스의 서로 다른 인코딩은 실제보다 이론에 가깝습니다. 아마도 이러한 메커니즘은 향후 버전에서 다시 검토될 예정입니다.PostgreSQL.

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

20.2.3. 서버와 서버 간 자동 문자 집합 변환 고객

포스트그레SQL토토 결과 서버와 클라이언트 간의 자동 문자 집합 변환 특정 문자 세트의 경우. 변환정보는 에 저장됨pg_conversion시스템 목록. SQL을 사용하여 새 변환을 생성할 수 있습니다. 명령전환 생성. 포스트그레SQL일부 포함 사전 정의된 변환. 그들은 다음에 나열되어 있습니다.테이블 20-2.

표 20-2. 클라이언트/서버 문자 집합 전환

서버 문자 집합 사용 가능한 클라이언트 문자 세트
SQL_ASCII SQL_ASCII, 유니토토 결과, MULE_INTERNAL
EUC_JP EUC_JP, SJIS, 유니토토 결과, MULE_INTERNAL
EUC_CN EUC_CN, 유니토토 결과, MULE_INTERNAL
EUC_KR EUC_KR, 유니토토 결과, MULE_INTERNAL
조하브 조하브, 유니토토 결과
EUC_TW EUC_TW, 빅5, 유니토토 결과, MULE_INTERNAL
LATIN1 LATIN1, 유니토토 결과 MULE_INTERNAL
LATIN2 LATIN2, WIN1250, 유니토토 결과, MULE_INTERNAL
LATIN3 LATIN3, 유니토토 결과, MULE_INTERNAL
LATIN4 LATIN4, 유니토토 결과, MULE_INTERNAL
LATIN5 LATIN5, 유니토토 결과
LATIN6 LATIN6, 유니토토 결과, MULE_INTERNAL
LATIN7 LATIN7, 유니토토 결과, MULE_INTERNAL
LATIN8 LATIN8, 유니토토 결과, MULE_INTERNAL
LATIN9 LATIN9, 유니토토 결과, MULE_INTERNAL
LATIN10 LATIN10, 유니토토 결과, MULE_INTERNAL
ISO_8859_5 ISO_8859_5, 유니토토 결과, MULE_INTERNAL, 승리, ALT, KOI8
ISO_8859_6 ISO_8859_6, 유니토토 결과
ISO_8859_7 ISO_8859_7, 유니토토 결과
ISO_8859_8 ISO_8859_8, 유니토토 결과
유니토토 결과 EUC_JP, SJIS, EUC_KR, UHC, 조하브, EUC_CN, GBK, EUC_TW, 빅5, 라틴어1LATIN10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, 승리, ALT, KOI8, WIN1256, TCVN, WIN874, GB18030, WIN1250
MULE_INTERNAL EUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, 빅5, LATIN1LATIN5, 승리, ALT, WIN1250, 빅5, ISO_8859_5, KOI8
KOI8 ISO_8859_5, 승리, ALT, KOI8, 유니토토 결과, MULE_INTERNAL
ALT ISO_8859_5, 승리, ALT, KOI8, 유니토토 결과, MULE_INTERNAL
WIN874 WIN874, 유니토토 결과
WIN1250 LATIN2, WIN1250, 유니토토 결과, MULE_INTERNAL
승리 ISO_8859_5, 승리, ALT, KOI8, 유니토토 결과, MULE_INTERNAL
WIN1256 WIN1256, 유니토토 결과
TCVN TCVN, 유니토토 결과

자동 문자 집합 변환을 활성화하려면 다음을 수행해야 합니다. 말하다포스트그레SQL클라이언트에서 사용하려는 문자 집합(인코딩)입니다. 이를 수행하는 방법에는 여러 가지가 있습니다.

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

    \인코딩 SJIS
  • 사용 중libpq함수.\인코딩실제로 전화함PQsetClientEncoding()그것 때문에 목적.

    int PQsetClientEncoding(PGconn *, const char *인코딩);
    

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

    int PQclientEncoding(const PGconn *);
    

    기호 ID가 아닌 인코딩 ID를 반환한다는 점에 유의하세요. 다음과 같은 문자열EUC_JP. 변환하려면 인코딩 ID를 인코딩 이름으로 지정하려면 다음을 사용할 수 있습니다.

    char *pg_encoding_to_char(intencoding_id);
    
  • 사용 중클라이언트 인코딩을 다음으로 설정. 클라이언트 인코딩 설정은 이 SQL을 사용하여 수행할 수 있습니다. 명령:

    클라이언트_인코딩을 '로 설정';
    

    또한 보다 표준적인 SQL 구문을 사용할 수 있습니다.이름 설정이 목적을 위해:

    이름 설정 '';
    

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

    클라이언트_인코딩 표시;

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

    클라이언트 인코딩 재설정;
  • 사용 중PGCLIENTENCODING. 만약 환경 변수PGCLIENTENCODING클라이언트의 환경에서는 해당 클라이언트 인코딩이 자동으로 선택됩니다. 서버에 연결되면. (이것은 이후에 다른 방법을 사용하여 재정의됩니다. 위에서 언급했습니다.)

  • 구성 변수 사용client_encoding. 만약client_encoding변수는 설정하면 클라이언트 인코딩이 자동으로 선택됩니다. 서버에 연결이 이루어졌습니다. (이것은 이후에 가능합니다. 언급된 다른 방법 중 하나를 사용하여 재정의됨 위에.)

특정 문자의 변환이 불가능한 경우 — 당신이 선택했다고 가정 해 봅시다EUC_JP에 대한 서버 및라틴어1클라이언트의 경우 일부 일본어 문자는 다음으로 변환할 수 없습니다.LATIN1— 16진수로 변환됩니다. 괄호 안의 바이트 값(예:(826C).

20.2.4. 추가 자료

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

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이 정의되었습니다. 여기.