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

20.2. 캐릭터 세트 토토 결과

캐릭터 세트 토토 결과postgresql텍스트를 a에 저장할 수 있습니다 단일 바이트 문자 세트를 포함한 다양한 문자 세트 ISO 8859 시리즈 및 다중 바이트 문자 세트와 같은 처럼euc(확장 유닉스 토토 결과), 유니 토토 결과 및 뮬 내부 토토 결과. 모든 문자 세트를 사용할 수 있습니다 서버 전체에 투명하게. (확장자를 사용하는 경우 다른 출처의 기능은 그들이 쓴지 여부에 따라 다릅니다. 그들의 토토 결과가 올바르게.) 기본 문자 세트가 선택됩니다 초기화하는 동안postgresql데이터베이스 클러스터 사용initdb. a를 만들 때 무시할 수 있습니다 사용 사용 데이터베이스createb또는 사용하여 SQL 명령데이터베이스 생성. 그래서 당신은 할 수 있습니다 문자 세트가 다른 여러 데이터베이스가 있습니다.

20.2.1. 토토 결과되는 캐릭터 세트

표 20-1쇼 서버에서 사용할 수있는 문자 세트.

표 20-1. 서버 문자 세트

이름 설명
SQL_ASCII ASCII
euc_jp 일본어EUC
euc_cn 중국어EUC
EUC_KR 한국어EUC
Johab 한국어EUC(행글베이스)
EUC_TW 대만EUC
유니 토토 결과 유니 토토 결과 (UTF-8)
mule_internal 뮬 내부 토토 결과
latin1 ISO 8859-1/ecma94 (라틴 알파벳 No.1)
latin2 ISO 8859-2/ecma94 (라틴 알파벳 No.2)
latin3 ISO 8859-3/ECMA94 (라틴 알파벳 No.3)
latin4 ISO 8859-4/ECMA94 (라틴 알파벳 No.4)
latin5 ISO 8859-9/ECMA128 (라틴 알파벳 No.5)
latin6 ISO 8859-10/ecma144 (라틴 알파벳 No.6)
latin7 ISO 8859-13 (라틴 알파벳 No.7)
latin8 ISO 8859-14 (라틴 알파벳 No.8)
latin9 ISO 8859-15 (라틴 알파벳 No.9)
latin10 ISO 8859-16/asroSR 14111 (라틴 알파벳 No.10)
ISO_8859_5 ISO 8859-5/ecma113 (라틴/키릴)
ISO_8859_6 ISO 8859-6/ecma114 (라틴/아랍어)
ISO_8859_7 ISO 8859-7/ecma118 (라틴/그리스어)
ISO_8859_8 ISO 8859-8/ECMA121 (라틴/히브리어)
KOI8 Koi8-R (U)
alt Windows CP866
Win874 Windows CP874 (Thai)
Win1250 Windows CP1250
WIN Windows CP1251
Win1256 Windows CP1256 (아랍어)
TCVN TCVN-5712/Windows CP1258 (베트남 사람)

중요 :PostgreSQL 7.2, latin5실수로 ISO 8859-5를 의미했습니다. 7.2에서 에,latin5ISO 8859-9를 의미합니다. 만약에 당신은latin5데이터베이스 생성 7.1 이하로 7.2 이상으로 마이그레이션하고 싶습니다. 이 변화에주의해야합니다.

전부는 아닙니다APIs 모두 나열된 문자 세트. 예를 들어,postgresqlJDBC 드라이버는 토토 결과하지 않습니다mule_internal, latin6, latin8latin10.

20.2.2. 문자 세트 설정

initdb기본값을 정의합니다 a에 대한 문자 세트PostgreSQL클러스터. 예를 들어,

initdb -e euc_jp

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

다른 문자가있는 데이터베이스를 만들 수 있습니다 세트:

createb -e euc_kr Korean

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

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

데이터베이스의 인코딩은 시스템 카탈로그에 저장됩니다pg_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 줄)

중요 :인코딩을 지정할 수는 있지만 데이터베이스를 원한다면 인코딩을 선택하는 것은 현명하지 않습니다. 그것은 당신이 가진 로케일이 기대하는 것이 아닙니다. 선택된. 그만큼lc_collateandLC_CTYPE설정은 a 특정 인코딩 및 로케일 의존적 작업 (그러한 정렬)로서 호환되지 않는 인코딩.

이 로케일 설정은 |initdb, 사용하기위한 명백한 유연성 클러스터의 다른 데이터베이스에서 다른 인코딩은 다음과 같습니다 실제보다 이론적입니다. 아마도 이것들입니다 메커니즘은 향후 버전의에서 재검토 될 것입니다.PostgreSQL.

여러 인코딩을 안전하게 사용하는 한 가지 방법은 로케일C또는POSIX동안initdb, 따라서 실제 로케일을 비활성화합니다 의식.

20.2.3. 자동 문자는 서버와 간의 변환을 설정합니다 고객

PostgreSQL토토 결과 자동 문자는 서버와 클라이언트 간의 변환을 설정합니다 특정 문자 세트의 경우. 전환 정보는 다음과 같습니다 에 저장PG_CONVERSION시스템 목록. SQL을 사용하여 새 변환을 만들 수 있습니다. 명령변환 생성. PostgreSQL일부와 함께 제공됩니다 사전 정의 된 전환. 그들은에 나열되어 있습니다.테이블 20-2.

표 20-2. 클라이언트/서버 문자 세트 전환

서버 문자 세트 사용 가능한 클라이언트 문자 세트
SQL_ASCII SQL_ASCII, 유니 토토 결과, mule_internal
euc_jp EUC_JP, SJIS, 유니 토토 결과, mule_internal
EUC_CN EUC_CN, 유니 토토 결과, mule_internal
EUC_KR EUC_KR, 유니 토토 결과, mule_internal
Johab Johab, 유니 토토 결과
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, 유니 토토 결과
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, 유니 토토 결과, mule_internal, WIN, alt, KOI8
ISO_8859_6 ISO_8859_6, 유니 토토 결과
ISO_8859_7 ISO_8859_7, 유니 토토 결과
ISO_8859_8 ISO_8859_8, 유니 토토 결과
유니 토토 결과 EUC_JP, SJIS, EUC_KR, UHC, Johab, EUC_CN, GBK, EUC_TW, big5, latin1tolatin10, ISO_8859_5, ISO_8859_6, ISO_8859_7, ISO_8859_8, WIN, alt, KOI8, Win1256, TCVN, Win874, GB18030, Win1250
mule_internal EUC_JP, SJIS, EUC_KR, EUC_CN, EUC_TW, big5, latin1tolatin5, WIN, alt, Win1250, big5, ISO_8859_5, KOI8
KOI8 ISO_8859_5, WIN, alt, KOI8, 유니 토토 결과, mule_internal
alt ISO_8859_5, WIN, alt, KOI8, 유니 토토 결과, mule_internal
Win874 Win874, 유니 토토 결과
Win1250 latin2, Win1250, 유니 토토 결과, mule_internal
WIN ISO_8859_5, WIN, alt, KOI8, 유니 토토 결과, mule_internal
Win1256 Win1256, 유니 토토 결과
TCVN TCVN, 유니 토토 결과

자동 문자 세트 변환을 활성화하려면 말하려면PostgreSQL클라이언트에서 사용하려는 문자 세트 (인코딩). 이것을 달성하는 몇 가지 방법이 있습니다 :

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

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

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

    여기서connis 서버 연결 및인코딩원하는 인코딩입니다 사용. 함수가 인코딩을 성공적으로 설정하면 IT를 설정합니다 반환 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 to 'value';

    또한 표준 SQL 구문을 사용할 수 있습니다이름 설정이 목적은 :

    이름 설정 'value';

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

    show client_encoding;

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

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

  • 구성 변수 사용client_encoding. 인 경우client_encoding변수입니다 세트, 해당 클라이언트 인코딩은 a 서버에 대한 연결이 이루어집니다. (이후에는 가능합니다 언급 된 다른 방법을 사용하여 재정의합니다 위에.)

특정 문자의 변환이 불가능한 경우 - 선택했다고 가정 해EUC_JP서버 및latin1클라이언트의 경우 일부 일본인 캐릭터는로 변환 할 수 없습니다.latin1- 그것은 16 진수로 변환됩니다 괄호 안의 바이트 값 (예 :(826C).

20.2.4. 추가 읽기

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

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이 정의됩니다 여기.