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

5.2. 멀티 바이트 지원

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

multibyte (MB) 지원은입니다 허용토토 커뮤니티to 와 같은 다중 바이트 문자 세트 처리EUC(확장 유닉스 코드), 유니 코드 및 뮬 내부 코드. 와 함께MB활성화 일반 표현식으로 멀티 바이트 문자 세트를 사용할 수 있습니다 (regexp), 좋아요 및 기타 기능. 기본 인코딩 초기화하는 동안 시스템이 선택됩니다토토 커뮤니티설치 사용initdb. 이것은 재정의 될 수 있습니다 를 사용하여 데이터베이스를 만들 때createb또는 SQL 명령을 사용하여데이터베이스 생성. 그래서 당신은 여러 가지 가질 수 있습니다 인코딩 시스템이 다른 데이터베이스.

5.2.1. 멀티 바이트 지원 활성화

Multibyte 옵션으로 구성 실행 :

./configure-enable-multibyte [=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 ECMA-94 라틴 알파벳 No.1
latin2 ISO 8859-2 ECMA-94 라틴 알파벳 No.2
latin3 ISO 8859-3 ECMA-94 라틴 알파벳 No.3
latin4 ISO 8859-4 ECMA-94 라틴 알파벳 No.4
latin5 ISO 8859-9 ECMA-128 라틴 알파벳 No.5
latin6 ISO 8859-10 ECMA-144 라틴 알파벳 No.6
latin7 ISO 8859-13 라틴 알파벳 No.7
latin8 ISO 8859-14 라틴 알파벳 No.8
latin9 ISO 8859-15 라틴 알파벳 No.9
latin10 ISO 8859-16 ASRO SR 14111 라틴 알파벳 No.10
ISO-8859-5 ECMA-113 라틴/사이릴
ISO-8859-6 ECMA-114 라틴/아랍어
ISO-8859-7 ECMA-118 라틴/그리스어
ISO-8859-8 ECMA-121 라틴/히브리어
KOI8 Koi8-R (U)
WIN Windows CP1251
alt Windows CP866

중요 :토토 커뮤니티7.2, latin5실수로 ISO 8859-5를 의미했습니다. 7.2에서 에,latin5ISO 8859-9를 의미합니다. 만약에 당신은latin5데이터베이스 생성 7.1 이하로 7.2 (또는 그 이후)로 마이그레이션하려고합니다. 이 변화에 대해 매우 조심해야합니다.

중요 :모든 API가 모든 것을 지원하는 것은 아닙니다 위에 나열된 인코딩. 예를 들어,토토 커뮤니티JDBC 드라이버는 그렇지 않습니다 지원하다mule_internal, latin6, latin8latin10.

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

$./configure-enable-multibyte = euc_jp

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

5.2.2. 인코딩 설정

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

$initdb -e euc_jp

기본 인코딩을 설정합니다EUC_JP(일본어의 확장 유닉스 코드). 사용할 수 있습니다-encoding대신-e더 긴 옵션 문자열을 입력하는 것을 선호하는 경우. 그렇지 않은 경우-e또는-encoding옵션이 제공됩니다 구성 시간에 지정된 시간이 사용됩니다.

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

$createb -e euc_kr Korean

이름이 지정된 데이터베이스를 생성합니다한국어witheuc_kr인코딩. 이것을 달성하는 또 다른 방법은 SQL을 사용하는 것입니다. 명령:

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

데이터베이스의 인코딩은로 표시됩니다.인코딩 열inpg_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
 회귀 | t-isii | SQL_ASCII
 템플릿 1 | t-isii | EUC_JP
 테스트 | t-isii | EUC_JP
 유니 코드 | t-isii | 유니 코드
(9 줄)

5.2.3. 서버와 간의 자동 인코딩 변환 고객

토토 커뮤니티서버와 클라이언트 간의 자동 인코딩 변환 일부 인코딩. 사용 가능한 조합은에 나열되어 있습니다.테이블 5-2.

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

서버 인코딩 사용 가능한 클라이언트 인코딩
SQL_ASCII SQL_ASCII, 유니 코드, mule_internal
euc_jp euc_jp, SJIS, 유니 코드, mule_internal
EUC_TW EUC_TW, big5, 유니 코드, mule_internal
latin1 latin1, 유니 코드 mule_internal
latin2 latin2, Win1250, 유니 코드, ​​mule_internal
latin3 latin3, 유니 코드 mule_internal
latin4 latin4, 유니 코드 mule_internal
latin5 latin5, 유니 코드 mule_internal
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, 유니 코드
ISO_8859_6 ISO_8859_6, 유니 코드
ISO_8859_7 ISO_8859_7, 유니 코드
ISO_8859_8 ISO_8859_8, 유니 코드
ISO_8859_9 ISO_8859_9, WIN, alt, KOI8R, 유니 코드, mule_internal
유니 코드 EUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, big5, latin1tolatin10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, WIN, alt, KOI8
mule_internal EUC_JP, SJIS, EUC_KR, euc_cn, EUC_TW, big5, latin1tolatin5, WIN, alt, Win1250
KOI8 ISO_8859_9, WIN, alt, KOI8, 유니 코드, mule_internal
WIN ISO_8859_9, WIN, alt, KOI8, 유니 코드, mule_internal
alt ISO_8859_9, WIN, alt, KOI8, 유니 코드, mule_internal

자동 인코딩 번역을 활성화하려면해야합니다 말하다토토 커뮤니티인코딩 고객에게 사용하고 싶습니다. 몇 가지 방법이 있습니다 이것을 달성하십시오.

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

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

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

    여기서connis 서버 연결 및인코딩원하는 인코딩입니다 사용. 인코딩을 성공적으로 설정하면 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 'encoding';

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

    이름 설정 '인코딩';

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

    show client_encoding;

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

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

5.2.4. 에 대한 유니 코드

유니 코드와 기타 간의 자동 인코딩 변환 인코딩이 지원되었습니다토토 커뮤니티7.1. 7.1의 경우 활성화되지 않았습니다 기본적으로. 이 기능을 활성화하려면로 구성을 실행하십시오.--enable-unicode-conversion옵션. 이 필요하다는 점에 유의하십시오.-enable-multibyte옵션 또한.

7.2,​​--enable-unicode-conversion가 필요하지 않습니다. 유니 코드 변환 기능이 자동으로 활성화됩니다 만약에-enable-multibyteis 지정.

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

선택했다고 가정합니다euc_jp용 서버 및latin1클라이언트의 경우 일부 일본인 캐릭터는로 번역 할 수 없습니다.latin1. 이 경우, 할 수없는 편지 에 대표latin1문자 세트는 다음과 같이 변환됩니다.

(Hexa Decimal)

5.2.6. 참조

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

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

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

http : //www.unicode.org/

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

RFC 2044

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

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 일
        * 프론트 엔드 인코딩에 대한 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는에 통합됩니다.토토 커뮤니티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 문자는 다음과 같습니다. 와 함께토토 커뮤니티로케일 지원 가능.

다음은 명심해야합니다 :

  • 성공은 적절한 시스템 로컬에 달려 있습니다. 이것은 그랬습니다 테스트Red Hat 6.0Slackware 3.6withCS_CZ.ISO8859-2로케일.

  • 서버의 데이터베이스 인코딩을 설정하지 마십시오 Win1250. 아니오가 있으므로 항상 latin2를 사용하십시오 Unix의 Win1250 로케일

  • Win1250 인코딩은 Windows ODBC에만 사용할 수 있습니다 클라이언트. 캐릭터는 즉, 즉, 그럴 것입니다 제대로 표시되고 저장되었습니다.

Windown Windows/ODBC

  1. 컴파일토토 커뮤니티로케일을 활성화하고 서버 측 인코딩이 설정된latin2.

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

    lc_all = cs_cz.iso8859-2
  3. 로컬을 설정하여 서버를 시작해야합니다!

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

  5. ODBC 드라이버 설치토토 커뮤니티창에서 기계.

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

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