Изглежда, че кодирането е различно от сървър до клиент. Можете да проверите това, като издадете следните команди:
SHOW client_encoding; --Equivalent to: SELECT current_setting('client_encoding');
SHOW server_encoding; --Equivalent to: SELECT current_setting('server_encoding');
PostgreSQL автоматично преобразува в клиентско кодиране. Вероятно и двете са различни във вашата среда. Можете да конфигурирате client_encoding
по много начини:
- Използване на
SET
команда при отворена връзка във вашето приложение:SET client_encoding = 'UTF-8';
- Използване на
set_config
функция при отворена връзка във вашето приложение:SELECT set_config('client_encoding', 'UTF-8', true);
- Конфигурирайте
PGCLIENTENCODING
променлива на средата във вашата ОС:export PGCLIENTENCODING=UTF8
- Редактирайте
client_encoding
в конфигурационния файл на postgres - Използвайте
ALTER SYSTEM
(трябва да опресните конфигурацията след това сSELECT pg_reload_conf();
):ALTER SYSTEM SET client_encoding = 'UTF-8';
Актуализация: За съжаление не е възможно да се активира автоматично преобразуване от SQL_ASCII.
Цитат от документация на Postgres .