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

5.2. 멀티 토토 캔 토토 캔

저자 :Tatsuo ishii (), 마지막 업데이트 된 2000-03-22. 확인하다Tatsuo 웹 사이트자세한 내용은

multibyte (MB) 토토 캔은입니다 허용PostgresTO EUC와 같은 다중 토토 캔 문자 세트를 처리하십시오 (확장 유니 닉스 코드), 유니 코드 및 뮬 내부 코드. 와 함께MB활성화 된 다중 토토 캔 문자 세트를 사용할 수 있습니다 정기적 인 표현식 (Regexp) 및 기타 기능. 기본 인코딩 시스템이 선택 중에 선택되어Postgres설치 사용initdb. 이것은 될 수 있습니다 를 사용하여 데이터베이스를 작성할 때 재정의createb또는 SQL 명령을 사용하여 데이터 베이스. 따라서 각각 a로 여러 개의 데이터베이스를 가질 수 있습니다 다른 인코딩 시스템.

MB또한 몇 가지 문제를 해결합니다 ISO8859를 포함한 8 비트 단일 토토 캔 문자 세트와 관련하여. (나 모든 문제가 해결되었다고 말하지 않을 것입니다. 방금 확인했습니다 회귀 테스트는 잘 진행되었고 프랑스 캐릭터 몇 명은 패치와 함께 사용됩니다. 문제가 있으면 알려주세요 8 비트 문자를 사용하는 동안.)

5.2.1. MB 활성화

Multibyte 옵션으로 구성 실행 :

% ./configure-enable-multibyte [=encoding_system]
여기서encoding_system할 수 있습니다 다음 표의 값 중 하나 :

표 5-1.Postgres문자 세트 인코딩

인코딩 설명
SQL_ASCII ASCII
EUC_JP 일본 EUC
EUC_CN 중국 EUC
EUC_KR 한국 EUC
EUC_TW 대만 EUC
유니 코드 유니 코드 (UTF-8)
mule_internal 뮬 내부
latin1 ISO 8859-1 영어 및 일부 유럽 언어
latin2 ISO 8859-2 영어 및 일부 유럽 언어
latin3 ISO 8859-3 영어 및 일부 유럽 언어
latin4 ISO 8859-4 영어 및 일부 유럽 언어
latin5 ISO 8859-5 영어 및 일부 유럽 언어
KOI8 KOI8-R (U)
WIN Windows CP1251
alt Windows CP866

다음은 구성의 예입니다Postgres일본인 인코딩을 사용하려면 기본:

% ./configure-enable-multibyte = euc_jp

인코딩 시스템이 생략 된 경우 (./configure --enable-multibyte), sql_ascii가 가정됩니다.

5.2.2. 인코딩 설정

initdb기본값을 정의합니다 a 인코딩Postgres설치. 예를 들어:

% initdb -e euc_jp
기본 인코딩을 EUC_JP로 설정합니다 (확장 UNIX 코드 일본어). "-e"대신 "encoding"을 사용할 수 있습니다. 더 긴 옵션 문자열을 입력하는 것이 좋습니다. 없는 경우 -e 또는 -encoding 옵션이 제공되며 구성 시간에 지정된 인코딩이 사용됩니다.

다른 인코딩으로 데이터베이스를 만들 수 있습니다.

EUC_KR 인코딩이있는 "Korean"이라는 데이터베이스를 작성합니다.
이것을 달성하는 또 다른 방법은 SQL 명령을 사용하는 것입니다 :
인코딩으로 데이터베이스 한국어 생성 = 'euc_kr';
데이터베이스의 인코딩은로 표시됩니다.인코딩 열inpg_database시스템 카탈로그. 당신은 그것을 볼 수 있습니다 psql 명령의 -l 또는 \ l 사용.
$ 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
 회귀 | t-isii | SQL_ASCII
 템플릿 1 | t-isii | EUC_JP
 테스트 | t-isii | EUC_JP
 유니 코드 | t-isii | 유니 코드
(9 줄)

5.2.3. 백엔드와 간의 자동 인코딩 번역 프론트 엔드

Postgres백엔드와 프론트 엔드 사이의 자동 인코딩 번역 일부 인코딩.

표 5-2.Postgres클라이언트/서버 문자 세트 인코딩

서버 인코딩 사용 가능한 클라이언트 인코딩
EUC_JP euc_jp, sjis
euc_tw euc_tw, big5
latin2 latin2, win1250
latin5 latin5, 승리, alt
mule_internal euc_jp, sjis, euc_kr, euc_cn, euc_tw, big5, latin1 to latin5, win, alt, Win1250

자동 인코딩 번역을 활성화하려면해야합니다 말하다Postgres인코딩 프론트 엔드에서 사용하고 싶습니다. 몇 가지 방법이 있습니다 이것을 달성하십시오.

  • 사용\ encoding명령PSQL. \ encoding프론트 엔드를 변경할 수 있습니다 즉석에서 인코딩. 예를 들어, 인코딩을 변경합니다 sjis, type :

    \ sjis 인코딩
  • libpq 함수 사용.\ encoding실제로 PQSetClientEncoding ()을 목적으로 호출합니다.

    int pqsetclientencoding (pgconn *conn, const char *인코딩)
    여기서conn백엔드 및인코딩is 사용하려는 인코딩. 인코딩을 성공적으로 설정하면 반환 0, 그렇지 않으면 -1. 이 연결을위한 현재 인코딩 다음을 사용하여 표시 할 수 있습니다.
    int pqclientencoding (const pgconn *conn)
    인코딩이 아닌 "인코딩 ID"를 반환합니다. "EUC_JP"와 같은 기호 문자열. 인코딩 ID를 An로 변환합니다 인코딩 기호, 당신은 사용할 수 있습니다 :
    char *pg_encoding_to_char (intencoding_id)
  • 사용set client_encoding to. 이 SQL은 프론트 엔드 측 인코딩을 설정할 수 있습니다. 명령:

    set client_encoding 'encoding';
    또한이 목적으로 SQL92 구문 "Set Names"를 사용할 수 있습니다 :
    이름 설정 '인코딩';
    현재 프론트 엔드 인코딩 쿼리 :
    show client_encoding;
    기본 인코딩으로 돌아 가기 :
    Reset Client_Encoding;
  • 사용pgclientencoding. 만약에 환경 변수pgclientencoding는 클라이언트에 정의되어 있습니다 환경, 해당 클라이언트 인코딩이 자동으로 선택됩니다 백엔드 연결이 이루어질 때. (이후에는 가능합니다 언급 된 다른 방법 중 하나를 사용하여 상체해야합니다 위에.)

5.2.4. 에 대한 유니 코드

유니 코드와 기타 간 자동 인코딩 변환 인코딩은 PostgreSQL 7.1 이후에 토토 캔되었습니다. 이것 때문에 거대한 변환 테이블이 필요하므로 기본적으로 활성화되지 않습니다. 이 기능을 활성화하려면 구성을 실행하십시오 --enable-unicode-conversion 옵션. 이것은 필요합니다 -enable-multibyte 옵션.

5.2.5. 무엇 번역이 불가능한 경우 발생합니까?

백엔드에 대해 euc_jp, latin1을 선택한다고 가정합니다. 프론트 엔드, 일부 일본인 캐릭터는 번역 할 수 없었습니다 라틴어로. 이 경우 표현할 수없는 서한 Latin1 문자 세트에서 :로 변환됩니다.

(Hexa Decimal)

5.2.6. 참조

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

5.2.7. 역사

2000 년 12 월 7 일
        * 유니 코드와 기타 간 자동 인코딩 변환
          인코딩이 구현됩니다
        * 위의 변경 사항은 7.1에 나타납니다

2000 년 5 월 20 일
        * SJIS UDC (NEC 선택 IBM KANJI) 토토 캔 기여
          Eiji Tokuya에 의해
        * 위의 변경 사항은 7.0.1에 나타납니다

2000 년 3 월 22 일
        * 새로운 LIBPQ 함수 추가 PQSetClientEncoding, PQClientencoding을 추가하십시오
        * ./configure-with-mb = euc_jp
          이제 더 이상 사용되지 않았습니다. 사용 
          ./configure-enable-multibyte = euc_jp
          대신에
        * SQL_ASCII 회귀 테스트 케이스를 추가하십시오
        * SJIS 사용자 정의 문자 (UDC) 토토 캔 추가
        * 위의 모든 것은 7.0에 나타납니다

1999 년 7 월 11 일
        * 클라이언트 인코딩으로 Win1250 (Windows Czech)에 대한 토토 캔 추가
          (Pavel Behal에 의해 기여)
        * 일부 컴파일러 경고 수정 (Tomoaki Nishiyama에 의해 기여)

1999 년 3 월 23 일
        * KOI8 (KOI8-R), WIN (CP1251), ALT (CP866)에 대한 토토 캔 추가
          (테스트 해 주신 Oleg Broytmann에 감사드립니다)
        * MB 및 로케일의 문제를 해결하십시오

1999 년 1 월 26 일
        * Fronend Encoding을 위해 BIG5에 대한 토토 캔을 추가하십시오
          (big5를 사용하려면 EUC_TW로 데이터베이스를 작성해야합니다)
        * EUC_TW에 대한 회귀 테스트 사례를 추가하십시오
          (Jonah Kuo에 의해 기여)

1998 년 12 월 15 일
        * SQL_ASCII 토토 캔과 관련된 버그가 고정되었습니다

1998 년 11 월 5 일
        * 6.4 릴리스. 이 버전에서는 PG_DATABASE에 "인코딩"이 있습니다.
          데이터베이스 인코딩을 나타내는 열입니다

1998 년 7 월 22 일
        * 컴파일 시간 대신 InitDB/CreatedB에서 인코딩을 결정하십시오
        * 사본 명령을 발행 할 때 pgclientencoding 토토 캔
        * SQL92 구문 토토 캔 "이름 설정"토토 캔
        * LATIN2-5 토토 캔
        * 유니 코드 회귀 테스트 케이스를 추가하십시오
        * MB의 새로운 테스트 스위트
        * 소스 파일 정리

1998 년 6 월 5 일
        * 백엔드 간 인코딩 번역에 대한 토토 캔 추가
          그리고 프론트 엔드
        * 새 명령 세트 client_encoding 등이 추가되었습니다
        * LATIN1 문자 세트에 대한 토토 캔을 추가하십시오
        * 8 비트 클린을 향상시킵니다

1998 년 4 월 21 일 일부 향상/수정
        * 문자 _length (), position (), substring ()가 이제 알고 있습니다 
          다중 바이트 문자
        * Octet_length () 추가
        * 구성하려면 -with-MB 옵션을 추가하십시오
        * EUC_KR에 대한 새로운 회귀 테스트
          (곧 공헌 함))
        * EUC_JP 회귀 테스트에 일부 테스트 사례 추가
        * 회귀/회귀에서 문제를 해결합니다. System V의 경우.
        * 8 비트 숯을 처리하려면 toupper (), tolower ()를 수정하십시오

1998 년 3 월 25 일 MB PL2는 PostgreSQL 6.3.1에 통합됩니다.

1998 년 3 월 10 일 PL2 출시
        * EUC_JP, euc_cn 및 mule_internal에 대한 회귀 테스트 추가
        * 영어 문서 추가 (이 파일)
        * 8 비트 단일 바이트 문자에 관한 문제를 해결하십시오

1998 년 3 월 1 일 PL1 릴리스

5.2.8. Windows/ODBC에서 Win1250

Windows 클라이언트 플랫폼에서 설정된 Win1250 문자는 다음과 같습니다. 와 함께Postgres로케일 토토 캔 활성화.

다음은 명심해야합니다 :

  • 성공은 적절한 시스템 로케일에 따라 다릅니다. 이것은 그랬습니다 CS_CZ.ISO8859-2로 RH6.0 및 Slackware 3.6으로 테스트 장소.

  • 서버 Multibyte 데이터베이스 인코딩을 설정하지 마십시오 Win1250에. A가 없기 때문에 항상 latin2를 사용하십시오 Unix의 Win1250 로케일

  • Win1250 인코딩은 m $ w odbc 클라이언트에 대해서만 사용할 수 있습니다. 캐릭터는 즉시 다시 표시되어 표시됩니다. 제대로 저장되었습니다.

실행할 때 다음을 기억하는 것이 중요합니다.

  • 이 구성은 정렬 순서에 따라 정렬 순서를 다시 표시합니다 당신의LC_x설정. 혼란스럽지 마십시오 사용하지 않기 때문에 회귀 테스트 결과 장소.

  • "와 같은 로케일ch"IS 시스템이 해당 로케일을 토토 캔하는 경우에만 올바르게 정렬되었습니다. 구형 시스템은 그렇게하지 않을 수 있습니다 (예 : RH6.0) 하다.

  • 돈을 ' 삽입해야합니다.162,50' (안에 쉼표를 참고하십시오 단일 크기).

  • 작성 당시 (1999 년 초),이 구성 광범위한 테스트를받지 못했습니다. 알려주세요 변경해야 할 변경!

Winder Windows/ODBC에서 Win1250

  1. 컴파일Postgres로케일 활성화 및 멀티 바이트 인코딩 설정latin2.

  2. 설치를 설정하십시오. 창조하는 것을 잊지 마십시오 프로필의 로케일 변수 (환경). 을 위한 예제 (이것은 정확하지 않을 수 있습니다Your환경) :

    lc_all = cs_cz.iso8859-2
    lc_collate = cs_cz.iso8859-2
    lc_ctype = cs_cz.iso8859-2
    lc_monetary = cs_cz.iso8859-2
    lc_numeric = cs_cz.iso8859-2
    lc_time = cs_cz.iso8859-2
  3. 당신은 로컬 세트로 우체국 장을 시작해야합니다!

  4. 체코 언어로 시도하고 질문.

  5. M $ Windows에서 PGSQL 용 ODBC 드라이버를 설치하십시오 기계.

  6. 데이터 소스를 올바르게 설정합니다. 이 라인을 포함하십시오 필드의 ODBC 구성 대화 상자설정 연결:

    set client_encoding = 'win1250';
  7. 이제 다시 시도하지만 ODBC가있는 Windows에서