Wygląda na to, że kodowanie różni się w zależności od serwera. Możesz to sprawdzić, wydając te polecenia:
SHOW client_encoding; --Equivalent to: SELECT current_setting('client_encoding');
SHOW server_encoding; --Equivalent to: SELECT current_setting('server_encoding');
PostgreSQL automatycznie konwertuje na kodowanie klienta. Prawdopodobnie oba są różne w twoim środowisku. Możesz skonfigurować client_encoding
na wiele sposobów:
- Korzystanie z
SET
polecenie po otwarciu połączenia w Twojej aplikacji:SET client_encoding = 'UTF-8';
- Korzystanie z
set_config
funkcja po otwarciu połączenia w Twojej aplikacji:SELECT set_config('client_encoding', 'UTF-8', true);
- Skonfiguruj
PGCLIENTENCODING
var środowiska w twoim systemie operacyjnym:export PGCLIENTENCODING=UTF8
- Edytuj
client_encoding
w pliku konfiguracyjnym postgresa - Użyj
ALTER SYSTEM
(musisz następnie odświeżyć konfigurację za pomocąSELECT pg_reload_conf();
):ALTER SYSTEM SET client_encoding = 'UTF-8';
Aktualizacja: Niestety nie jest możliwe włączenie automatycznej konwersji z SQL_ASCII.
Cytat z dokumentacji Postgresa .