Din serverkodning verkar vara UTF8.
Jag misstänker att din client_encoding
inte matchar, vilket kan ge dig en felaktig bild av vad du har att göra med. Kolla med:
SHOW client_encoding; -- in your actual session
Och läs de här relaterade svaren:
Kan inte infoga tyska tecken i Postgres
Byt ut unicode-tecken i PostgreSQL
Resten av verktygskedjan måste också vara synkroniserad. När man använder puTTY, till exempel, måste man se till att terminalen överensstämmer med resten:Change settings... Window -> Translation -> Remote character set
=UTF-8
.
När det gäller din första fråga har du redan den bästa lösningen. Ett par omljud ersätts bäst med en sträng av replace()
uttalanden.
Som du redan verkar veta är ersättning av enstaka tecken mer effektiva med (en enda) translate()
uttalande.
Relaterat: