Có vẻ như cách mã hóa khác nhau giữa máy chủ và máy khách. Bạn có thể xác minh điều này bằng cách sử dụng các lệnh sau:
SHOW client_encoding; --Equivalent to: SELECT current_setting('client_encoding');
SHOW server_encoding; --Equivalent to: SELECT current_setting('server_encoding');
PostgreSQL tự động chuyển đổi sang mã hóa máy khách. Có lẽ cả hai đều khác nhau trong môi trường của bạn. Bạn có thể định cấu hình client_encoding
bằng nhiều cách:
- Sử dụng
SET
lệnh khi mở kết nối trong ứng dụng của bạn:SET client_encoding = 'UTF-8';
- Sử dụng
set_config
chức năng khi mở kết nối trong ứng dụng của bạn:SELECT set_config('client_encoding', 'UTF-8', true);
- Định cấu hình
PGCLIENTENCODING
môi trường var trong bạn OS:export PGCLIENTENCODING=UTF8
- Chỉnh sửa
client_encoding
trong tệp cấu hình postgres - Sử dụng
ALTER SYSTEM
(bạn phải làm mới cấu hình sau đó vớiSELECT pg_reload_conf();
):ALTER SYSTEM SET client_encoding = 'UTF-8';
Cập nhật: Rất tiếc, không thể bật chuyển đổi tự động từ SQL_ASCII.
Trích dẫn từ tài liệu Postgres .