Twoje kodowanie serwera wygląda na UTF8.
Podejrzewam, że Twoje client_encoding
nie pasuje, co może dać ci złe wrażenie na temat tego, z czym masz do czynienia. Skontaktuj się z:
SHOW client_encoding; -- in your actual session
I przeczytaj te powiązane odpowiedzi:
Nie można wstawić niemieckich znaków w Postgresie
Zamień znaki Unicode w PostgreSQL
Reszta łańcucha narzędzi również musi być zsynchronizowana. Używając na przykład puTTY, należy się upewnić, że terminal zgadza się z resztą:Change settings... Window -> Translation -> Remote character set
=UTF-8
.
Jeśli chodzi o Twoje pierwsze pytanie, masz już najlepsze rozwiązanie. Kilka umlautów najlepiej zastąpić ciągiem replace()
oświadczenia.
Jak już wiesz, zamiany pojedynczych znaków są bardziej wydajne dzięki (pojedynczym) translate()
oświadczenie.
Powiązane:
- Zamień znaki Unicode w PostgreSQL
- Wyrażenie regularne usuń wszystkie wystąpienia wielu znaków w ciągu