저자:이시이 타츠오 (
<ishii@토토 커뮤니티.org), 마지막 업데이트 날짜: 2000-03-22. 확인타츠오의 웹사이트자세한 내용은.
멀티토토 커뮤니티(MB) 지원은 허용하도록 의도됨포스트그레SQL에 다음과 같은 다중 바이트 문자 집합을 처리합니다.EUC(확장 Unix 코드), 유니코드 및 Mule 내부 코드. 와 함께MB활성화됨 정규식에 멀티토토 커뮤니티 문자 집합을 사용할 수 있습니다. (regexp), LIKE 및 기타 기능. 기본 인코딩 초기화하는 동안 시스템이 선택되었습니다.포스트그레SQL다음을 사용하여 설치initdb. 이는 재정의될 수 있습니다. 다음을 사용하여 데이터베이스를 생성할 때생성된 DB또는 SQL 명령을 사용하여데이터베이스 생성. 그래서 여러 개를 가질 수 있습니다 각각 다른 인코딩 시스템을 사용하는 데이터베이스입니다.
멀티토토 커뮤니티 옵션으로 구성을 실행하십시오:
./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 | Mule 내부 코드 |
| 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 | 코이8-R(U) |
| 승리 | 윈도우 CP1251 |
| ALT | 윈도우 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(일본어용 확장 Unix 코드). 사용할 수 있습니다.--인코딩대신-E더 긴 옵션 문자열을 입력하려는 경우.
그렇지 않은 경우-E또는--인코딩옵션이 주어지면 인코딩은
구성 시 지정된 것이 사용됩니다.
다른 인코딩으로 데이터베이스를 생성할 수 있습니다:
$ createdb -E EUC_KR 한국어
이름이 지정된 데이터베이스를 생성합니다한국어함께EUC_KR인코딩. 이를 달성하는 또 다른 방법은 SQL을 사용하는 것입니다. 명령:
ENCODING = 'EUC_KR'로 한국어 데이터베이스 생성;
데이터베이스의 인코딩은 다음과 같이 표시됩니다.인코딩 열에서pg_database시스템 카탈로그. 당신은 그것을 볼 수 있습니다
를 사용하여-l옵션 또는\l명령psql.
$ 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.
표 5-2. 클라이언트/서버 문자 집합 인코딩
| 서버 인코딩 | 사용 가능한 클라이언트 인코딩 |
|---|---|
| SQL_ASCII | SQL_ASCII, 유니코드, MULE_INTERNAL |
| EUC_JP | EUC_JP, SJIS, 유니코드, MULE_INTERNAL |
| EUC_TW | EUC_TW, 빅5, 유니코드, 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, 승리, ALT, KOI8R, 유니코드, MULE_INTERNAL |
| 유니코드 | EUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, 빅5, LATIN1에LATIN10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, 승리, ALT, KOI8 |
| MULE_INTERNAL | EUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, 빅5, 라틴어1에LATIN5, 승리, ALT, WIN1250 |
| KOI8 | ISO_8859_9, 승리, ALT, KOI8, 유니코드, MULE_INTERNAL |
| 승리 | ISO_8859_9, 승리, ALT, KOI8, 유니코드, MULE_INTERNAL |
| ALT | ISO_8859_9, 승리, ALT, KOI8, 유니코드, MULE_INTERNAL |
자동 인코딩 번역을 활성화하려면 다음을 수행해야 합니다. 말하다토토 커뮤니티인코딩 클라이언트에서 사용하고 싶습니다. 여러 가지 방법이 있습니다 이것을 성취하라.
다음을 사용하여\인코딩명령 입력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 구문을 사용할 수 있습니다.이름 설정이 목적을 위해:
이름 설정 '인코딩';
현재 클라이언트 인코딩을 쿼리하려면:
클라이언트_인코딩 표시;
기본 인코딩으로 돌아가려면:
CLIENT_ENCODING 재설정;
사용 중PGCLIENTENCODING. 만약에 환경 변수PGCLIENTENCODING클라이언트의 환경에서는 해당 클라이언트 인코딩이 자동으로 선택됩니다. 서버에 연결되면. (이것은 이후에 다른 방법을 사용하여 재정의됩니다. 위에서 언급했습니다.)
유니코드와 기타 코드 간의 자동 인코딩 변환
인코딩은 이후 지원되었습니다.포스트그레SQL7.1. 7.1에서는 활성화되지 않았습니다.
기본적으로. 이 기능을 활성화하려면 다음을 사용하여 구성을 실행하세요.--유니코드 변환 활성화옵션.
이를 위해서는 다음이 필요합니다.--멀티토토 커뮤니티 활성화옵션도 있습니다.
7.2의 경우,--유니코드 변환 활성화필요하지 않습니다.
유니코드 변환 기능이 자동으로 활성화됩니다.
만일--멀티토토 커뮤니티 활성화이다
지정되었습니다.
당신이 선택한다고 가정해보세요EUC_JP에 대한 서버 및LATIN1클라이언트의 경우 일부 일본어 문자는 다음으로 번역할 수 없습니다.LATIN1. 이 경우에는 할 수 없는 편지 에 표현됨LATIN1문자 세트는 다음과 같이 변환됩니다.
(헥사 십진수)
이것들은 다양한 종류에 대해 배우기 시작하는 좋은 자료입니다 인코딩 시스템의.
자세한 설명EUC_JP, EUC_CN, EUC_KR, EUC_TW섹션 3.2에 나타납니다.
유니코드 컨소시엄 웹사이트
UTF-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에 대한 새로운 회귀 테스트
(홍순명 제공)
* EUC_JP 회귀 테스트에 일부 테스트 케이스 추가
* System V의 경우 regress/regress.sh 문제 수정
* 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 문자 집합은 다음과 같습니다. 와 함께 사용됨토토 커뮤니티와 함께 로케일 지원이 활성화되었습니다.
다음 사항을 명심해야 합니다:
성공은 적절한 시스템 로케일에 달려 있습니다. 이것은 테스트됨레드햇 6.0그리고슬랙웨어 3.6, 그리고cs_CZ.iso8859-2로케일.
서버의 데이터베이스 인코딩을 다음으로 설정하지 마십시오. WIN1250. LATIN2가 없기 때문에 항상 대신 LATIN2를 사용하십시오. Unix의 WIN1250 로케일.
WIN1250 인코딩은 Windows ODBC에서만 사용할 수 있습니다. 클라이언트. 문자는 즉석에서 기록됩니다. 올바르게 표시되고 다시 저장됩니다.
Windows/ODBC의 WIN1250
컴파일토토 커뮤니티로캘이 활성화되고 서버 측 인코딩이 다음으로 설정됨LATIN2.
설치를 설정하세요. 만드는 것을 잊지 마세요 환경의 로케일 변수. 예를 들어 (이 정확하지 않을 수 있습니다.당신의환경):
LC_ALL=cs_CZ.ISO8859-2
로케일을 설정하여 서버를 시작해야 합니다!
체코어로 시도해 보고 정렬해 보세요. 쿼리.
ODBC 드라이버 설치토토 커뮤니티당신의 Windows에서 기계.
데이터 소스를 올바르게 설정하십시오. 다음 줄을 포함하세요. 필드의 ODBC 구성 대화 상자연결 설정:
SET CLIENT_ENCODING = 'WIN1250';
이제 다시 시도해 보세요. 단, Windows에서는 ODBC를 사용하세요.