저자 :Tatsuo Ishii (
<ishii@토토 커뮤니티.org
), 마지막 업데이트 된 2000-03-22. 확인하다Tatsuo 웹 사이트자세한 내용은
multibyte (MB) 지원은입니다 허용토토 커뮤니티to 와 같은 다중 바이트 문자 세트 처리EUC(확장 유닉스 코드), 유니 코드 및 뮬 내부 코드. 와 함께MB활성화 일반 표현식으로 멀티 바이트 문자 세트를 사용할 수 있습니다 (regexp), 좋아요 및 기타 기능. 기본 인코딩 초기화하는 동안 시스템이 선택됩니다토토 커뮤니티설치 사용initdb. 이것은 재정의 될 수 있습니다 를 사용하여 데이터베이스를 만들 때createb또는 SQL 명령을 사용하여데이터베이스 생성. 그래서 당신은 여러 가지 가질 수 있습니다 인코딩 시스템이 다른 데이터베이스.
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, latin8및latin10.
다음은 구성의 예입니다토토 커뮤니티일본인 인코딩을 사용하려면 기본:
$./configure-enable-multibyte = euc_jp
인코딩 시스템이 생략 된 경우 (./configure-enable-multibyte),SQL_ASCII가정됩니다.
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.
표 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는 클라이언트에 정의되어 있습니다 환경, 해당 클라이언트 인코딩이 자동으로 선택됩니다 서버에 대한 연결이 이루어질 때. (이것은 할 수 있습니다 결과적으로 다른 방법을 사용하여 재정의됩니다 위에서 언급했습니다.)
유니 코드와 기타 간의 자동 인코딩 변환
인코딩이 지원되었습니다토토 커뮤니티7.1. 7.1의 경우 활성화되지 않았습니다
기본적으로. 이 기능을 활성화하려면로 구성을 실행하십시오.--enable-unicode-conversion
옵션.
이 필요하다는 점에 유의하십시오.-enable-multibyte
옵션 또한.
7.2,--enable-unicode-conversion
가 필요하지 않습니다.
유니 코드 변환 기능이 자동으로 활성화됩니다
만약에-enable-multibyte
is
지정.
선택했다고 가정합니다euc_jp용 서버 및latin1클라이언트의 경우 일부 일본인 캐릭터는로 번역 할 수 없습니다.latin1. 이 경우, 할 수없는 편지 에 대표latin1문자 세트는 다음과 같이 변환됩니다.
(Hexa Decimal)
이것은 다양한 종류에 대해 배우기 시작하기에 좋은 출처입니다. 인코딩 시스템의.
자세한 설명EUC_JP, EUC_CN, EUC_KR, EUC_TW섹션 3.2에 나타납니다.
유니 코드 컨소시엄의 웹 사이트
UTF-8이 정의됩니다 여기.
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에 의해 기여<jonahkuo@mail.ttn.com.tw
)
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 릴리스
Windows 클라이언트 플랫폼에서 설정된 Win1250 문자는 다음과 같습니다. 와 함께토토 커뮤니티로케일 지원 가능.
다음은 명심해야합니다 :
성공은 적절한 시스템 로컬에 달려 있습니다. 이것은 그랬습니다 테스트Red Hat 6.0및Slackware 3.6withCS_CZ.ISO8859-2로케일.
서버의 데이터베이스 인코딩을 설정하지 마십시오 Win1250. 아니오가 있으므로 항상 latin2를 사용하십시오 Unix의 Win1250 로케일
Win1250 인코딩은 Windows ODBC에만 사용할 수 있습니다 클라이언트. 캐릭터는 즉, 즉, 그럴 것입니다 제대로 표시되고 저장되었습니다.
Windown Windows/ODBC
컴파일토토 커뮤니티로케일을 활성화하고 서버 측 인코딩이 설정된latin2.
설치를 설정하십시오. 창조하는 것을 잊지 마십시오 환경의 로케일 변수. 예를 들어 (이것은 정확하지 않을 수 있습니다Your환경) :
lc_all = cs_cz.iso8859-2
로컬을 설정하여 서버를 시작해야합니다!
체코 언어로 시도하고 질문.
ODBC 드라이버 설치토토 커뮤니티창에서 기계.
데이터 소스를 올바르게 설정하십시오. 이 라인을 포함하십시오 필드의 ODBC 구성 대화 상자설정 연결:
set client_encoding = 'win1250';
이제 다시 시도하지만 ODBC가있는 Windows에서