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

5.2. 멀티바이트 토토 캔

저자:이시이 타츠오 (), 마지막 업데이트 날짜: 2000-03-22. 확인Tatsuo의 웹사이트더 많은 정보를 원하시면.

멀티토토 캔(MB) 토토 캔은 허용하도록 의도됨포스트그레에 EUC(Extended Unix)와 같은 다중 토토 캔 문자 집합을 처리합니다. 코드), 유니코드 및 Mule 내부 코드. 와 함께MB활성화되면 멀티토토 캔 문자 집합을 사용할 수 있습니다. 정규식(regexp), LIKE 및 기타 함수에서. 초기화하는 동안 기본 인코딩 시스템이 선택됩니다.포스트그레스다음을 사용하여 설치initdb. 참고로 이런 일이 일어날 수 있습니다 다음을 사용하여 데이터베이스를 생성할 때 재정의됩니다.생성된 DB또는 SQL 명령 CREATE를 사용하여 데이터베이스. 따라서 각각의 데이터베이스를 여러 개 가질 수 있습니다. 다른 인코딩 시스템.

MB또한 몇 가지 문제를 해결합니다 ISO8859를 포함한 8비트 단일 토토 캔 문자 세트에 관한 것입니다. (나는 모든 문제가 해결되었다고 말할 수는 없습니다. 방금 확인했어요 회귀 테스트는 잘 진행되었으며 몇 가지 프랑스어 문자가 패치와 함께 사용됩니다. 문제가 발견되면 알려주세요. 8비트 문자를 사용하는 동안.)

5.2.1. MB 활성화 중

멀티토토 캔 옵션으로 구성 실행:

% ./configure --enable-멀티토토 캔[=encoding_system]

어디에서encoding_system될 수 있습니다 다음 표의 값 중 하나:

표 5-1.포스트그레문자 집합 인코딩

인코딩 설명
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)
승리 윈도우 CP1251
ALT 윈도우 CP866

다음은 구성의 예입니다포스트그레일본어 인코딩을 사용하려면 다음을 수행하세요. 기본값:

% ./configure --enable-multibyte=EUC_JP

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

5.2.2. 인코딩 설정

initdb기본값을 정의합니다. a에 대한 인코딩포스트그레스설치. 예를 들면:

% initdb -E EUC_JP
기본 인코딩을 EUC_JP(확장 Unix 코드: 일본어). 다음과 같은 경우 "-E" 대신 "--encoding"을 사용할 수 있습니다. 더 긴 옵션 문자열을 입력하는 것을 선호합니다. -E 또는 --encoding이 없는 경우 옵션이 주어지면 구성 시 지정된 인코딩이 사용됩니다.

다른 인코딩으로 데이터베이스를 생성할 수 있습니다:

%createb -E EUC_KR 한국어
EUC_KR 인코딩을 사용하여 "한국어"라는 데이터베이스를 생성합니다. 이를 수행하는 또 다른 방법은 SQL 명령을 사용하는 것입니다.
ENCODING = 'EUC_KR'로 한국어 데이터베이스 생성;
데이터베이스의 인코딩은 다음과 같이 표시됩니다.인코딩 열에서pg_database시스템 카탈로그. 당신은 그것을 볼 수 있습니다 psql 명령의 -l 또는 \l을 사용합니다.
$ 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행)

5.2.3. 백엔드와 백엔드 간의 자동 인코딩 변환 프런트엔드

포스트그레토토 캔 백엔드와 프런트엔드 간의 자동 인코딩 변환 일부 인코딩.

표 5-2.포스트그레스클라이언트/서버 문자 세트 인코딩

서버 인코딩 사용 가능한 클라이언트 인코딩
EUC_JP EUC_JP, SJIS
EUC_TW EUC_TW, BIG5
LATIN2 LATIN2, WIN1250
LATIN5 LATIN5, WIN, ALT
MULE_INTERNAL EUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, BIG5, LATIN1 ~ LATIN5, WIN, ALT, WIN1250

자동 인코딩 번역을 활성화하려면 다음을 수행해야 합니다. 말하다포스트그레스인코딩 당신 프론트엔드에서 사용하고 싶습니다. 여러 가지 방법이 있습니다 이것을 성취하라.

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

    \인코딩 SJIS
  • libpq 함수를 사용합니다.\인코딩실제로는 해당 목적에 따라 PQsetClientEncoding()을 호출합니다.

    int PQsetClientEncoding(PGconn *, const char *인코딩)
    
    
    어디에서다음에 연결되어 있습니다. 백엔드 및인코딩은 사용하고 싶은 인코딩 인코딩이 성공적으로 설정되면 0을 반환하고 그렇지 않으면 -1을 반환합니다. 이 연결의 현재 인코딩 다음을 사용하여 표시할 수 있습니다.
    int PQclientEncoding(const PGconn *)
    
    
    인코딩이 아닌 "인코딩 ID"를 반환한다는 점에 유의하세요. "EUC_JP"와 같은 기호 문자열입니다. 인코딩 ID를 인코딩 기호를 사용하면 다음을 사용할 수 있습니다.
    char *pg_encoding_to_char(intencoding_id)
    
    
  • 사용 중클라이언트_인코딩을 다음으로 설정. 프런트엔드 측 인코딩 설정은 이 SQL로 수행할 수 있습니다. 명령:

    CLIENT_ENCODING을 '인코딩'으로 설정;
    또한 이 목적으로 SQL92 구문 "SET NAMES"를 사용할 수 있습니다:
    이름 설정 '인코딩';
    현재 프런트엔드 인코딩을 쿼리하려면:
    클라이언트_인코딩 표시;
    기본 인코딩으로 돌아가려면:
    CLIENT_ENCODING 재설정;
  • 사용 중PGCLIENTENCODING. 만약에 환경 변수PGCLIENTENCODING클라이언트의 환경에서는 해당 클라이언트 인코딩이 자동으로 선택됩니다. 백엔드 연결이 이루어지면. (이것은 이후에 가능합니다. 언급된 다른 방법 중 하나를 사용하여 재정의됩니다. 위.)

5.2.4. 소개 유니코드

유니코드와 기타 코드 간의 자동 인코딩 변환 인코딩은 PostgreSQL 7.1부터 토토 캔되었습니다. 왜냐하면 이 거대한 변환 테이블이 필요하지만 기본적으로 활성화되어 있지 않습니다. 이 기능을 활성화하려면 다음과 같이 구성을 실행하세요. --enable-unicode-conversion 옵션. 이를 위해서는 다음이 필요합니다. --enable-multibyte 옵션도 있습니다.

5.2.5. 무엇 번역이 불가능하면 어떻게 되나요?

백엔드에 EUC_JP를 선택하고 백엔드에 LATIN1을 선택한다고 가정합니다. 프런트엔드에서 일부 일본어 문자를 번역할 수 없습니다. LATIN1로. 이 경우 표현할 수 없는 문자 LATIN1 문자 집합은 다음과 같이 변환됩니다.

(헥사 십진수)

5.2.6. 참고자료

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

5.2.7. 역사

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

2000년 5월 20일
        * SJIS UDC(NEC 선택 IBM 한자) 토토 캔 기여
          토쿠야 에이지
        * 위 변경 사항은 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 체코어) 토토 캔 추가
          (파벨 베할 제공)
        * 일부 컴파일러 경고 수정(기여: Tomoaki Nishiyama)

1999년 3월 23일
        * KOI8(KOI8-R), WIN(CP1251), ALT(CP866) 토토 캔 추가
          (테스트를 해주신 Oleg Broytmann에게 감사드립니다)
        * MB 및 로케일 문제 수정

1999년 1월 26일
        * 프런트엔드 인코딩을 위한 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에서 인코딩을 결정합니다.
        * COPY 명령 실행 시 PGCLIENTENCODING 토토 캔
        * SQL92 구문 "SET NAMES" 토토 캔
        * LATIN2-5 토토 캔
        * UNICODE 회귀 테스트 케이스 추가
        * MB를 위한 새로운 테스트 스위트
        * 소스 파일 정리

1998년 6월 5일
        * 백엔드 간 인코딩 변환 토토 캔 추가
          그리고 프론트엔드
        * 새로운 명령 SET CLIENT_ENCODING 등이 추가되었습니다.
        * LATIN1 문자 집합에 대한 토토 캔 추가
        * 8비트 청결도 향상

1998년 4월 21일 일부 개선/수정
        * 이제 char_length(), position(), substring()이 인식됩니다. 
          멀티바이트 문자
        * octet_length() 추가
        * 구성하려면 --with-mb 옵션을 추가하세요.
        * EUC_KR에 대한 새로운 회귀 테스트
          (홍순명 제공))
        * EUC_JP 회귀 테스트에 일부 테스트 케이스 추가
        * System V의 경우 regress/regress.sh 문제 수정
        * 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 문자 집합은 다음과 같습니다. 와 함께 사용됨포스트그레로케일 포함 토토 캔이 활성화되었습니다.

다음 사항을 명심해야 합니다:

  • 성공은 적절한 시스템 로케일에 달려 있습니다. 이것은 cs_CZ.iso8859-2를 사용하여 RH6.0 및 Slackware 3.6에서 테스트되었습니다. 로케일.

  • 서버 멀티바이트 데이터베이스 인코딩을 설정하지 마십시오. WIN1250으로. LATIN2가 없기 때문에 항상 대신 LATIN2를 사용하십시오. Unix의 WIN1250 로케일.

  • WIN1250 인코딩은 M$W ODBC 클라이언트에만 사용할 수 있습니다. 문자는 즉시 기록되어 표시되고 제대로 다시 저장되었습니다.

달릴 때 다음 사항을 기억하는 것이 중요합니다:

  • 이 구성은 다음에 따라 정렬 순서를 재정렬합니다. 당신의LC_x설정. 혼동하지 마세요 회귀 테스트 결과는 사용하지 않기 때문에 로케일.

  • "와 같은 로케일ch"은 시스템이 해당 로케일을 토토 캔하는 경우에만 올바르게 정렬됩니다. 이전 시스템에서는 그렇게 할 수 없지만 새로운 시스템(예: RH6.0)에서는 그렇지 않을 수 있습니다. 하세요.

  • '로 돈을 넣어야 합니다162,50' (안에 쉼표를 적어두세요. 작은따옴표).

  • 작성 당시(1999년 초) 이 구성은 광범위한 테스트를 받지 않았습니다. 우리에게 알려주세요 변경해야 했던 사항이 있으면!

Windows/ODBC의 WIN1250

  1. 컴파일포스트그레와 함께 로캘이 활성화되고 멀티바이트 인코딩이 다음으로 설정되었습니다.LATIN2.

  2. 설치를 설정하세요. 만드는 것을 잊지 마세요 프로필(환경)의 로케일 변수. 에 대한 예(다음과 같은 경우에는 정확하지 않을 수 있음)당신의환경):

    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. 이제 다시 시도해 보세요. 단, Windows에서는 ODBC를 사용하세요.