Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

kèo tỷ số bóng đá euro hôm nay 20.2. Hỗ trợ bộ ký tự

Hỗ trợ bộ ký tự trongPostgreSQL10846_11018EUC(Mã Unix mở rộng), Unicode và mã nội bộ Mule. Tất cả các bộ ký tự có thể được sử dụng minh bạch trong toàn bộ máy chủ. (Nếu bạn sử dụng tiện ích mở rộng các chức năng từ các nguồn khác, nó phụ thuộc vào việc họ đã viết Mã của chúng một cách chính xác.) Bộ ký tự mặc định được chọn Trong khi khởi tạo của bạnPostgreSQLCụm cơ sở dữ liệu bằng cách sử dụnginitDB. Nó có thể bị ghi đè khi bạn tạo một cơ sở dữ liệu sử dụngcreatedbhoặc bằng cách sử dụng Lệnh SQLTạo cơ sở dữ liệu. Vì vậy, bạn có thể có nhiều cơ sở dữ liệu với một bộ ký tự khác nhau.

20.2.1. Bộ ký tự được hỗ trợ

Bảng 20-1Hiển thị các bộ ký tự có sẵn để sử dụng trong máy chủ.

Bảng 20-1. Bộ ký tự máy chủ

tên Mô tả
SQL_ASCII ASCII
EUC_JP Nhật BảnEUC
EUC_CN Trung QuốcEUC
EUC_KR Hàn QuốcEUC
Johab Hàn QuốcEUC(cơ sở treo)
13167_13175 Đài LoanEUC
Unicode unicode (UTF-8)
MULE_INTERNAL Mã nội bộ Mule
Latin1 ISO 8859-1/ECMA94 (Bảng chữ cái Latin số 1)
Latin2 ISO 8859-2/ECMA94 (Bảng chữ cái Latin số 2)
Latin3 ISO 8859-3/ECMA94 (Bảng chữ cái Latin số 3)
Latin4 ISO 8859-4/ECMA94 (Bảng chữ cái Latin số 4)
Latin5 ISO 8859-9/ECMA128 (Bảng chữ cái Latin số 5)
Latin6 ISO 8859-10/ECMA144 (Bảng chữ cái Latin số 6)
Latin7 ISO 8859-13 (Bảng chữ cái Latin số 7)
Latin8 ISO 8859-14 (Bảng chữ cái Latin số 8)
Latin9 ISO 8859-15 (Bảng chữ cái Latin số 9)
Latin10 ISO 8859-16/ASROSR 14111 (Bảng chữ cái Latin số 10)
ISO_8859_5 ISO 8859-5/ECMA113 (Latin/Cyrillic)
ISO_8859_6 ISO 8859-6/ECMA114 (Latin/tiếng Ả Rập)
ISO_8859_7 ISO 8859-7/ECMA118 (Latin/Hy Lạp)
ISO_8859_8 ISO 8859-8/ECMA121 (tiếng Latin/tiếng Do Thái)
KOI8 KOI8-r (u)
win Windows CP1251
alt Windows CP866
Win1256 Windows CP1256 (tiếng Ả Rập)
TCVN TCVN-5712/Windows CP1258 (Việt Nam)
Win874 Windows CP874 (Thái)

quan trọng:trướcPostgreSQL7.2,Latin517239_17292Latin5Phương tiện ISO 8859-9. Nếu như bạn có mộtLatin5Cơ sở dữ liệu được tạo Vào ngày 7.1 trở lên và muốn di chuyển đến 7.2 trở lên, bạn nên cẩn thận về sự thay đổi này.

không phải tất cảAPIS Hỗ trợ tất cả Các bộ ký tự được liệt kê. Ví dụ:PostgreSQLTrình điều khiển JDBC không hỗ trợMule_Internal, Latin6, Latin8Latin10.

20.2.2. Đặt bộ ký tự

initDBXác định mặc định Bộ ký tự cho mộtPostgreSQLCụm. Ví dụ,

initDB -e euc_jp

Đặt bộ ký tự mặc định (mã hóa) thànhEUC_JP(Mã Unix mở rộng cho tiếng Nhật). Bạn có thể sử dụng--Encodingthay vì-eNếu bạn thích nhập tùy chọn dài hơn chuỗi. Nếu không-ehoặc---EncodingTùy chọn được đưa ra,SQL_ASCIIđược sử dụng.

Bạn có thể tạo cơ sở dữ liệu với một ký tự khác bộ:

createdb -e euc_kr Hàn Quốc

Điều này sẽ tạo cơ sở dữ liệu có tênHàn Quốcsử dụng bộ ký tựEUC_KR. Một cách khác để thực hiện điều này là sử dụng Lệnh SQL này:

Tạo cơ sở dữ liệu Hàn Quốc với mã hóa 'euc_kr';

Mã hóa cho cơ sở dữ liệu được lưu trữ trong danh mục hệ thốngpg_database. Bạn có thể thấy rằng bằng cách sử dụng The-LTùy chọn hoặc\ Llệnh củaPSQL.

$PSQL -LDanh sách cơ sở dữ liệu
   Cơ sở dữ liệu |  Chủ sở hữu |   Mã hóa    
---------------+---------+---------------
 euc_cn | T-ishii | EUC_CN
 EUC_JP | T-ishii | EUC_JP
 euc_kr | T-ishii | EUC_KR
 euc_tw | T-ishii | EUC_TW
 MULE_ INITERNAL | T-ishii | MULE_ INITERNAL
 hồi quy | T-ishii | SQL_ASCII
 Template1 | T-ishii | EUC_JP
 Kiểm tra | T-ishii | EUC_JP
 Unicode | T-ishii | Unicode
(9 hàng)

20.2.3. Chuyển đổi bộ ký tự tự động giữa máy chủ và Khách hàng

PostgreSQLHỗ trợ Chuyển đổi bộ ký tự tự động giữa máy chủ và máy khách cho một số bộ ký tự nhất định. Thông tin chuyển đổi là được lưu trữ trongpg_conversion20290_20374Tạo chuyển đổi. PostgreSQLđi kèm với một số Chuyển đổi được xác định trước. Chúng được liệt kê trongBảng 20-2.

Bảng 20-2. Bộ ký tự máy khách/máy chủ Chuyển đổi

Bộ ký tự máy chủ Bộ ký tự máy khách có sẵn
SQL_ASCII SQL_ASCII, unicode, MULE_INTERNAL
EUC_JP EUC_JP, SJIS, Unicode, Mule_Internal
EUC_CN EUC_CN, Unicode, MULE_INTERNAL
EUC_KR euc_kr, Unicode, MULE_INTERNAL
Johab Johab, Unicode
EUC_TW EUC_TW, Big5, Unicode, Mule_Internal
Latin1 Latin1, Unicode Mule_Internal
Latin2 Latin2, Win1250, Unicode, MULE_INTERNAL
Latin3 Latin3, Unicode, Mule_Internal
Latin4 Latin4, Unicode, Mule_Internal
Latin5 Latin5, Unicode
Latin6 Latin6, Unicode, MULE_INTERNAL
Latin7 Latin7, Unicode, MULE_INTERNAL
Latin8 Latin8, unicode, 24369_24384
Latin9 Latin9, unicode, Mule_Internal
Latin10 24755_24764, unicode, Mule_Internal
ISO_8859_5 ISO_8859_5, Unicode, MULE_INTERNAL, win, alt, KOI8
ISO_8859_6 ISO_8859_6, unicode
ISO_8859_7 ISO_8859_7, Unicode
ISO_8859_8 ISO_8859_8, Unicode
Unicode EUC_JP, SJIS, euc_kr, UHC, Johab, EUC_CN, GBK, EUC_TW, Big5, Latin1đếnLatin10, 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, Latin1đếnLatin5, win, ALT, Win1250, Big5, ISO_8859_5, KOI8
KOI8 ISO_8859_5, win, ALT, KOI8, Unicode, MULE_INTERNAL
win ISO_8859_5, win, Alt, KOI8, unicode, MULE_INTERNAL
Alt ISO_8859_5, win, Alt, KOI8, unicode, Mule_Internal
Win1256 Win1256, Unicode
TCVN TCVN, Unicode
Win874 Win874, Unicode

29274_29347PostgreSQLThe Bộ ký tự (mã hóa) bạn muốn sử dụng trong máy khách. Có một số cách để thực hiện điều này:

  • Sử dụng\ mã hóaLệnh trongPSQL. \ mã hóaCho phép bạn thay đổi máy khách mã hóa khi đang bay. Ví dụ: để thay đổi mã hóa thànhSJIS, loại:

    \ mã hóa SJIS
  • sử dụnglibpqchức năng.\ mã hóathực tế gọipqsetClientEncoding ()cho nó mục đích.

    int pqsetClientEncoding (pgconn *Conn, const char *mã hóa);

    WHEREConnlà a kết nối với máy chủ vàmã hóa30443_30647

    int pqClientEncoding (const pgconn *Conn);

    Lưu ý rằng nó trả về ID mã hóa, không phải là biểu tượng Chuỗi nhưEUC_JP. Để chuyển đổi ID mã hóa thành tên mã hóa, bạn có thể sử dụng:

    char *pg_encoding_to_char (intmã hóa_id);
  • sử dụngđặt client_encoding thành. Đặt mã hóa máy khách có thể được thực hiện với SQL này yêu cầu:

    đặt client_encoding thành 'giá trị';

    Ngoài ra, bạn có thể sử dụng cú pháp SQL tiêu chuẩn hơnĐặt têncho mục đích này:

    Đặt tên 'giá trị';

    Để truy vấn mã hóa máy khách hiện tại:

    hiển thị client_encoding;

    Để trở lại mã hóa mặc định:

    Đặt lại client_encoding;
  • Sử dụngpgclientencoding. Nếu như Biến môi trườngpgclientencodingđược xác định trong máy khách môi trường, mã hóa máy khách đó được chọn tự động Khi kết nối với máy chủ được thực hiện. (Điều này có thể sau đó được ghi đè bằng bất kỳ phương thức nào khác đã đề cập ở trên.)

  • Sử dụng biến cấu hìnhclient_encoding. Nếuclient_encodingBiến trongPostgreSql.confđược đặt, máy khách đó mã hóa được chọn tự động khi kết nối với Máy chủ được thực hiện. (Điều này sau đó có thể được ghi đè bằng cách sử dụng bất kỳ phương pháp nào khác được đề cập ở trên.)

Nếu không thể chuyển đổi một ký tự cụ thể - Giả sử bạn đã chọnEUC_JPcho máy chủ vàLatin1Đối với máy khách, sau đó Một số ký tự Nhật Bản không thể được chuyển đổi thànhLatin1- Nó ​​được chuyển đổi thành thập lục phân của nó giá trị byte trong ngoặc đơn, ví dụ:(826C).

20.2.4. Đọc thêm

Đây là những nguồn tốt để bắt đầu tìm hiểu về các loại khác nhau của các hệ thống mã hóa.

ftp: //ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf

Giải thích chi tiết vềEUC_JP, EUC_CN, EUC_KR, EUC_TWXuất hiện trong Phần 3.2.

http: //www.unicode.org/

33939_33979

RFC 2044

UTF-8 được xác định đây.