Cơ sở dữ liệu PostgreSQL có kiểu ký tự gốc, "mã hóa máy chủ". Nó thường là utf-8.
Tất cả văn bản đều nằm trong bảng mã này. Văn bản mã hóa hỗn hợp không được hỗ trợ, ngoại trừ nếu được lưu trữ dưới dạng bytea
(tức là dưới dạng chuỗi byte không trong suốt).
Bạn không thể lưu trữ các chuỗi "unicode" hoặc "non-unicode" và PostgreSQL không có khái niệm "varchar" so với "nvarchar". Với utf-8, các ký tự nằm trong dải ASCII 7-bit (và một số ký tự khác) được lưu trữ dưới dạng một byte duy nhất và các ký tự rộng hơn yêu cầu nhiều bộ nhớ hơn, vì vậy nó chỉ tự động. utf-8 yêu cầu nhiều bộ nhớ hơn ucs-2 hoặc utf-16 đối với văn bản có tất cả các ký tự "rộng", nhưng ít hơn đối với văn bản hỗn hợp.
PostgreSQL tự động chuyển đổi sang / từ mã hóa văn bản của ứng dụng khách, sử dụng client_encoding
cài đặt. Không cần phải chuyển đổi rõ ràng.
Nếu máy khách của bạn là "Unicode" (mà các sản phẩm của Microsoft thường nói khi chúng có nghĩa là UCS-2 hoặc UTF-16), thì hầu hết các trình điều khiển máy khách sẽ xử lý mọi chuyển đổi utf-8 <--> utf-16 cho bạn.
Vì vậy, bạn không cần quan tâm, miễn là khách hàng của bạn thực hiện I / O với các tùy chọn bộ ký tự chính xác và đặt một client_encoding
chính xác khớp với dữ liệu mà nó thực sự gửi trên dây. (Điều này là tự động với hầu hết các trình điều khiển máy khách như PgJDBC, nPgSQL hoặc trình điều khiển Unicode psqlODBC).
Xem: