이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 23.3. 캐릭터 토토 캔 지원버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

23.3. 문자 범퍼카 토토 지원

문자 집합 지원PostgreSQLISO 8859 시리즈와 같은 단일 바이트 문자 집합과 다음과 같은 다중 바이트 문자 집합을 포함하여 다양한 문자 집합(인코딩이라고도 함)으로 텍스트를 저장할 수 있습니다.EUC(확장 Unix 코드), utf-8 및 Mule 내부 코드. 지원되는 모든 문자 집합은 클라이언트에서 투명하게 사용할 수 있지만 일부는 서버 내에서 사용(즉, 서버 측 인코딩으로)이 지원되지 않습니다. 초기화하는 동안 기본 문자 집합이 선택됩니다.PostgreSQL다음을 사용하는 데이터베이스 클러스터initdb. 데이터베이스를 생성할 때 재정의할 수 있으므로 각각 다른 범퍼카 토토 집합을 가진 여러 데이터베이스를 가질 수 있습니다.

그러나 중요한 제한은 각 데이터베이스의 범퍼카 토토 집합이 데이터베이스의 범퍼카 토토 집합과 호환되어야 한다는 것입니다.LC_CTYPE(범퍼카 토토 분류) 및LC_COLLATE(범퍼카 토토열 정렬 순서) 로케일 설정. 에 대한C또는POSIX로케일, 모든 문자 범퍼카 토토가 허용되지만 다른 libc 제공 로케일의 경우 올바르게 작동하는 문자 범퍼카 토토는 하나만 있습니다. (그러나 Windows에서는 utf-8 인코딩을 모든 로케일과 함께 사용할 수 있습니다.) ICU 지원을 구성한 경우 ICU 제공 로케일을 대부분의 서버 측 인코딩과 함께 사용할 수 있지만 전부는 아니지만 사용할 수 있습니다.

23.3.1. 지원되는 문자 범퍼카 토토

표 23.1다음에서 사용할 수 있는 문자 집합을 표시합니다.PostgreSQL.

표 23.1. PostgreSQL문자 범퍼카 토토

이름 설명 언어 서버? 중환자실? 바이트/범퍼카 토토 별칭
빅5 빅 파이브 중국어 번체 아니요 아니요 1-2 WIN950, Windows950
EUC_CN 확장 UNIX 코드-CN 중국어 간체 1-3
EUC_JP 확장 UNIX 코드-JP 일본어 1-3
EUC_JIS_2004 확장 UNIX 코드-JP, JIS X 0213 일본어 아니요 1-3
EUC_KR 확장 UNIX 코드-KR 한국어 1-3
EUC_TW 확장 UNIX 코드-TW 중국어(번체), 대만어 1-3
GB18030 국가 표준 중국어 아니요 아니요 1-4
GBK 확장 국가 표준 중국어 간체 아니요 아니요 1-2 WIN936, Windows936
ISO_8859_5 ISO 8859-5,ECMA 113 라틴어/키릴 범퍼카 토토 1
ISO_8859_6 ISO 8859-6,ECMA 114 라틴어/아랍어 1
ISO_8859_7 ISO 8859-7,ECMA 118 라틴어/그리스어 1
ISO_8859_8 ISO 8859-8,ECMA 121 라틴어/히브리어 1
조하브 조하브 한국어(한글) 아니요 아니요 1-3
KOI8R 코이8-R 키릴 범퍼카 토토(러시아어) 1 KOI8
KOI8U 코이8-U 키릴 범퍼카 토토(우크라이나어) 1
LATIN1 ISO 8859-1,ECMA 94 서유럽어 1 ISO88591
LATIN2 ISO 8859-2,ECMA 94 중앙 유럽 1 ISO88592
LATIN3 ISO 8859-3,ECMA 94 남유럽인 1 ISO88593
LATIN4 ISO 8859-4,ECMA 94 북유럽 1 ISO88594
LATIN5 ISO 8859-9,ECMA 128 터키어 1 ISO88599
LATIN6 ISO 8859-10,ECMA 144 북유럽 1 ISO885910
LATIN7 ISO 8859-13 발트해 1 ISO885913
LATIN8 ISO 8859-14 켈트족 1 ISO885914
LATIN9 ISO 8859-15 유로 및 액센트가 있는 LATIN1 1 ISO885915
LATIN10 ISO 8859-16,ASROSR 14111 루마니아어 아니요 1 ISO885916
MULE_INTERNAL Mule 내부 코드 다국어 Emacs 아니요 1-4
SJIS 시프트 JIS 일본어 아니요 아니요 1-2 므스칸지, ShiftJIS, WIN932, Windows932
SHIFT_JIS_2004 시프트 JIS, JIS X 0213 일본어 아니요 아니요 1-2
SQL_ASCII 지정되지 않음(텍스트 참조) 모든 아니요 1
UHC 통일한글코드 한국어 아니요 아니요 1-2 WIN949, Windows949
UTF8 유니코드, 8비트 모두 1-4 유니코드
WIN866 윈도우 CP866 키릴 범퍼카 토토 1 대체
WIN874 윈도우 CP874 태국어 아니요 1
WIN1250 윈도우 CP1250 중앙 유럽 1
WIN1251 윈도우 CP1251 키릴 범퍼카 토토 1 승리
WIN1252 윈도우 CP1252 서유럽어 1
WIN1253 윈도우 CP1253 그리스어 1
WIN1254 윈도우 CP1254 터키어 1
WIN1255 윈도우 CP1255 히브리어 1
WIN1256 윈도우 CP1256 아랍어 1
WIN1257 윈도우 CP1257 발트해 1
WIN1258 윈도우 CP1258 베트남어 1 ABC, TCVN, TCVN5712, VSCII

모든 클라이언트가 아님APIs는 나열된 모든 문자 집합을 지원합니다. 예를 들어,PostgreSQLJDBC 드라이버는 지원하지 않습니다.MULE_INTERNAL, LATIN6, LATIN8LATIN10.

SQL_ASCII설정은 다른 설정과 상당히 다르게 동작합니다. 서버 문자셋이 다음과 같은 경우SQL_ASCII, 서버는 ASCII 표준에 따라 바이트 값 0-127을 해석하는 반면, 바이트 값 128-255는 해석되지 않은 문자로 간주됩니다. 설정이 다음과 같은 경우 인코딩 변환이 수행되지 않습니다.SQL_ASCII. 따라서 이 설정은 특정 인코딩이 사용 중이라는 선언이 아니라 인코딩에 대한 무지를 선언하는 것입니다. 대부분의 경우 ASCII가 아닌 데이터로 작업하는 경우를 사용하는 것은 현명하지 않습니다.SQL_ASCII설정 이유는PostgreSQL비ASCII 범퍼카 토토를 변환하거나 확인하는 데 도움을 드릴 수 없습니다.

23.3.2. 범퍼카 토토 집합 설정

initdb에 대한 기본 범퍼카 토토 집합(인코딩)을 정의합니다.PostgreSQL클러스터. 예를 들어,

initdb -E EUC_JP

기본 문자 집합을 다음으로 설정합니다.EUC_JP(일본어용 확장 Unix 코드). 당신은 사용할 수 있습니다--인코딩대신에-E더 긴 옵션 범퍼카 토토열을 선호하는 경우. 그렇지 않은 경우-E또는--인코딩옵션이 주어졌습니다.initdb지정된 또는 기본 로케일을 기반으로 사용할 적절한 인코딩을 결정하려고 시도합니다.

인코딩이 선택한 로케일과 호환된다면 데이터베이스 생성 시 기본이 아닌 인코딩을 지정할 수 있습니다:

createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr 한국어

이렇게 하면 다음 이름의 데이터베이스가 생성됩니다.한국어범퍼카 토토 집합을 사용하는EUC_KR및 로케일ko_KR. 이를 수행하는 또 다른 방법은 다음 SQL 명령을 사용하는 것입니다.

'EUC_KR' 인코딩으로 한국어 데이터베이스 생성 LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;

위 명령은 다음을 복사하도록 지정합니다.템플릿0데이터베이스. 다른 데이터베이스를 복사하는 경우 데이터가 손상될 수 있으므로 인코딩 및 로케일 설정을 원본 데이터베이스의 설정에서 변경할 수 없습니다. 자세한 내용은 참조섹션 22.3.

데이터베이스 인코딩은 시스템 카탈로그에 저장됩니다.pg_database. 를 사용하여 볼 수 있습니다.psql -l옵션 또는\l명령.

$ psql -l데이터베이스 목록
   이름 |  소유자 | 인코딩 |  데이터 정렬 |    유형 |          액세스 권한          
------------+------------+------------+------------+------------+------------+-------------------------
 클로케디비 | 린나카 | SQL_ASCII | 다 | 다 | 
 영어DB | 린나카 | UTF8 | en_GB.UTF8 | en_GB.UTF8 | 
 일본어 | 린나카 | UTF8 | ja_JP.UTF8 | ja_JP.UTF8 | 
 한국어 | 린나카 | EUC_KR | ko_KR.euckr | ko_KR.euckr | 
 포스트그레스 | 린나카 | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | 
 템플릿0 | 린나카 | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | =c/hlinnaka,hlinnaka=CTc/hlinnaka
 템플릿1 | 린나카 | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | =c/hlinnaka,hlinnaka=CTc/hlinnaka

중요

대부분의 최신 운영 체제에서,PostgreSQL어떤 범퍼카 토토 집합이 암시되는지 결정할 수 있습니다.LC_CTYPE설정하면 일치하는 데이터베이스 인코딩만 사용되도록 강제됩니다. 이전 시스템에서는 선택한 로케일에서 예상하는 인코딩을 사용하는지 확인하는 것은 귀하의 책임입니다. 이 영역의 실수는 정렬과 같은 로캘 종속 작업의 이상한 동작으로 이어질 가능성이 높습니다.

PostgreSQL슈퍼유저가 다음을 사용하여 데이터베이스를 생성할 수 있도록 허용합니다.SQL_ASCII언제라도 인코딩LC_CTYPE아닙니다C또는POSIX. 위에서 언급한 바와 같이,SQL_ASCII은 데이터베이스에 저장된 데이터에 특정 인코딩이 포함되도록 강제하지 않으므로 이 선택은 로케일에 따른 오작동의 위험을 초래합니다. 이 설정 조합의 사용은 더 이상 사용되지 않으며 언젠가는 완전히 금지될 수 있습니다.

23.3.3. 서버와 클라이언트 간 자동 범퍼카 토토 집합 변환

PostgreSQL특정 문자 집합 조합에 대해 서버와 클라이언트 간의 자동 문자 집합 변환을 지원합니다. 변환 정보는에 저장됩니다.pg_conversion시스템 카탈로그.PostgreSQL다음과 같이 사전 정의된 변환이 제공됩니다.표 23.2. SQL 명령을 사용하여 새 변환을 생성할 수 있습니다.전환 생성.

표 23.2. 클라이언트/서버 문자 집합 변환

서버 문자 범퍼카 토토 사용 가능한 클라이언트 문자 범퍼카 토토
빅5 서버 인코딩으로 지원되지 않음
EUC_CN EUC_CN, MULE_INTERNAL, UTF8
EUC_JP EUC_JP, MULE_INTERNAL, SJIS, UTF8
EUC_JIS_2004 EUC_JIS_2004, SHIFT_JIS_2004, UTF8
EUC_KR EUC_KR, MULE_INTERNAL, UTF8
EUC_TW EUC_TW, 빅5, MULE_INTERNAL, UTF8
GB18030 서버 인코딩으로 지원되지 않음
GBK 서버 인코딩으로 지원되지 않음
ISO_8859_5 ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866, WIN1251
ISO_8859_6 ISO_8859_6, UTF8
ISO_8859_7 ISO_8859_7, UTF8
ISO_8859_8 ISO_8859_8, UTF8
조하브 서버 인코딩으로 지원되지 않음
KOI8R KOI8R, ISO_8859_5, MULE_INTERNAL, UTF8, WIN866, WIN1251
KOI8U KOI8U, UTF8
LATIN1 라틴어1, MULE_INTERNAL, UTF8
LATIN2 LATIN2, MULE_INTERNAL, UTF8, WIN1250
LATIN3 LATIN3, MULE_INTERNAL, UTF8
LATIN4 LATIN4, MULE_INTERNAL, UTF8
LATIN5 LATIN5, UTF8
LATIN6 LATIN6, UTF8
LATIN7 LATIN7, UTF8
LATIN8 LATIN8, UTF8
LATIN9 LATIN9, UTF8
LATIN10 LATIN10, UTF8
MULE_INTERNAL MULE_INTERNAL, 빅5, EUC_CN, EUC_JP, EUC_KR, EUC_TW, ISO_8859_5, KOI8R, LATIN1LATIN4, SJIS, WIN866, WIN1250, WIN1251
SJIS 서버 인코딩으로 지원되지 않음
SHIFT_JIS_2004 서버 인코딩으로 지원되지 않음
SQL_ASCII 모두(변환이 수행되지 않음)
UHC 서버 인코딩으로 지원되지 않음
UTF8 지원되는 모든 인코딩
WIN866 WIN866, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN1251
WIN874 WIN874, UTF8
WIN1250 WIN1250, LATIN2, MULE_INTERNAL, UTF8
WIN1251 WIN1251, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866
WIN1252 WIN1252, UTF8
WIN1253 WIN1253, UTF8
WIN1254 WIN1254, UTF8
WIN1255 WIN1255, UTF8
WIN1256 WIN1256, UTF8
WIN1257 WIN1257, UTF8
WIN1258 WIN1258, UTF8

자동 문자 집합 변환을 활성화하려면 다음을 알려주어야 합니다.PostgreSQL클라이언트에서 사용하려는 범퍼카 토토 집합(인코딩). 이를 수행하는 방법에는 여러 가지가 있습니다.

  • 다음을 사용하여\인코딩명령 입력psql. \인코딩즉시 클라이언트 인코딩을 변경할 수 있습니다. 예를 들어 인코딩을 다음으로 변경하려면SJIS, 유형:

    \SJIS 인코딩
  • libpq (503 토토 사이트 순위 페치 실패)에는 클라이언트 인코딩을 제어하는 기능이 있습니다.

  • 사용 중클라이언트 인코딩을 다음으로 설정. 클라이언트 인코딩 설정은 다음 SQL 명령을 사용하여 수행할 수 있습니다.

    클라이언트_인코딩을 '로 설정';

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

    이름 설정 '';

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

    클라이언트_인코딩 표시;

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

    클라이언트 인코딩 재설정;
  • 사용 중PGCLIENTENCODING. 환경 변수인 경우PGCLIENTENCODING는 클라이언트 환경에 정의되어 있으며, 해당 클라이언트 인코딩은 서버에 연결될 때 자동으로 선택됩니다. (이는 나중에 위에서 언급한 다른 방법을 사용하여 재정의될 수 있습니다.)

  • 구성 변수 사용client_encoding. 만약client_encoding변수가 설정되어 서버에 연결될 때 클라이언트 인코딩이 자동으로 선택됩니다. (이는 나중에 위에서 언급한 다른 방법을 사용하여 재정의될 수 있습니다.)

특정 범퍼카 토토의 변환이 불가능할 경우 — 선택했다고 가정하십시오.EUC_JP서버용 및라틴어1클라이언트의 경우 표현이 없는 일부 일본어 문자가 반환됩니다.LATIN1— 오류가 보고되었습니다.

클라이언트 문자 집합이 다음과 같이 정의된 경우SQL_ASCII, 서버의 범퍼카 토토 집합에 관계없이 인코딩 변환이 비활성화됩니다. 서버와 마찬가지로SQL_ASCII모든 ASCII 데이터로 작업하지 않는 한 현명하지 않습니다.

23.3.4. 추가 자료

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

CJKV 정보 처리: 중국어, 일본어, 한국어 및 베트남어 컴퓨팅

다음에 대한 자세한 설명이 포함되어 있습니다.EUC_JP, EUC_CN, EUC_KR, EUC_TW.

http://www.unicode.org/

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

RFC 3629

UTF-8(8비트 UCS/유니코드 변환 형식)이 여기에 정의됩니다.