A codificação do seu servidor parece ser UTF8.
Suspeito que sua
client_encoding
não corresponde, o que pode lhe dar uma impressão errada do que você está lidando. Verificar com:SHOW client_encoding; -- in your actual session
E leia estas respostas relacionadas:
Não é possível inserir caracteres alemães no Postgres
Substituir caracteres unicode no PostgreSQL
O resto da cadeia de ferramentas também precisa estar em sincronia. Ao usar o puTTY, por exemplo, é preciso ter certeza de que o terminal concorda com o resto:
Change settings... Window -> Translation -> Remote character set
=UTF-8
. Quanto à sua primeira pergunta, você já tem a melhor solução. Alguns tremas são melhor substituídos por uma string de
replace()
declarações. Como você já deve saber, as substituições de caractere único são mais eficientes com (um único)
translate()
declaração. Relacionado:
- Substituir caracteres unicode no PostgreSQL
- Regex remove todas as ocorrências de vários caracteres em uma string