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
SETlệnh khi mở kết nối trong ứng dụng của bạn:SET client_encoding = 'UTF-8'; - Sử dụng
set_configchứ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
PGCLIENTENCODINGmôi trường var trong bạn OS:export PGCLIENTENCODING=UTF8 - Chỉnh sửa
client_encodingtrong 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 .