저자:이시이 타츠오 (<ishii@postgresql.org), 마지막 업데이트 날짜: 2000-03-22. 확인Tatsuo의 웹사이트더 많은 정보를 원하시면.
멀티토토 캔(MB) 토토 캔은 허용하도록 의도됨포스트그레에 EUC(Extended Unix)와 같은 다중 토토 캔 문자 집합을 처리합니다. 코드), 유니코드 및 Mule 내부 코드. 와 함께MB활성화되면 멀티토토 캔 문자 집합을 사용할 수 있습니다. 정규식(regexp), LIKE 및 기타 함수에서. 초기화하는 동안 기본 인코딩 시스템이 선택됩니다.포스트그레스다음을 사용하여 설치initdb. 참고로 이런 일이 일어날 수 있습니다 다음을 사용하여 데이터베이스를 생성할 때 재정의됩니다.생성된 DB또는 SQL 명령 CREATE를 사용하여 데이터베이스. 따라서 각각의 데이터베이스를 여러 개 가질 수 있습니다. 다른 인코딩 시스템.
MB또한 몇 가지 문제를 해결합니다 ISO8859를 포함한 8비트 단일 토토 캔 문자 세트에 관한 것입니다. (나는 모든 문제가 해결되었다고 말할 수는 없습니다. 방금 확인했어요 회귀 테스트는 잘 진행되었으며 몇 가지 프랑스어 문자가 패치와 함께 사용됩니다. 문제가 발견되면 알려주세요. 8비트 문자를 사용하는 동안.)
멀티토토 캔 옵션으로 구성 실행:
% ./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가 가정됩니다.
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.포스트그레스클라이언트/서버 문자 세트 인코딩
| 서버 인코딩 | 사용 가능한 클라이언트 인코딩 |
|---|---|
| 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클라이언트의 환경에서는 해당 클라이언트 인코딩이 자동으로 선택됩니다. 백엔드 연결이 이루어지면. (이것은 이후에 가능합니다. 언급된 다른 방법 중 하나를 사용하여 재정의됩니다. 위.)
유니코드와 기타 코드 간의 자동 인코딩 변환 인코딩은 PostgreSQL 7.1부터 토토 캔되었습니다. 왜냐하면 이 거대한 변환 테이블이 필요하지만 기본적으로 활성화되어 있지 않습니다. 이 기능을 활성화하려면 다음과 같이 구성을 실행하세요. --enable-unicode-conversion 옵션. 이를 위해서는 다음이 필요합니다. --enable-multibyte 옵션도 있습니다.
백엔드에 EUC_JP를 선택하고 백엔드에 LATIN1을 선택한다고 가정합니다. 프런트엔드에서 일부 일본어 문자를 번역할 수 없습니다. LATIN1로. 이 경우 표현할 수 없는 문자 LATIN1 문자 집합은 다음과 같이 변환됩니다.
(헥사 십진수)
이것들은 다양한 종류에 대해 배우기 시작하는 좋은 자료입니다 인코딩 시스템의.
ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.infEUC_JP, EUC_CN, EUC_KR, EUC_TW에 대한 자세한 설명 섹션 3.2에 나타납니다.
유니코드:http://www.unicode.org/홈페이지 유니코드.
RFC 2044utf-8이 정의되었습니다 여기.
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 제공)<jonahkuo@mail.ttn.com.tw)
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에 대한 새로운 회귀 테스트
(홍순명 제공)<hong@lunaris.hanmesoft.co.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 출시됨
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
컴파일포스트그레와 함께 로캘이 활성화되고 멀티바이트 인코딩이 다음으로 설정되었습니다.LATIN2.
설치를 설정하세요. 만드는 것을 잊지 마세요 프로필(환경)의 로케일 변수. 에 대한 예(다음과 같은 경우에는 정확하지 않을 수 있음)당신의환경):
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
로케일이 설정된 포스트마스터를 시작해야 합니다!
체코어로 시도해 보고 정렬해 보세요. 쿼리.
M$ Windows에 PgSQL용 ODBC 드라이버 설치 기계.
당신의 데이터 소스를 적절하게 설정하세요. 다음 줄을 포함하세요. 필드의 ODBC 구성 대화 상자연결 설정:
SET CLIENT_ENCODING = 'WIN1250';
이제 다시 시도해 보세요. 단, Windows에서는 ODBC를 사용하세요.