Em resumo, você não pode fazer isso apenas com phpPgAdmin ou SQL sem arriscar corrupção de dados existentes .Você tem que exportar todos os dados, criar banco de dados com codificação correta e restaurar os dados exportados.
É assim que você deve proceder:
-
criar despejo de banco de dados :
pg_dump your_database > your_database.sql
isso salvará seu banco de dados no formato sql, na codificação que você possui atualmente.
-
excluir banco de dados (ou renomeie):
DROP DATABASE your_database
se você tiver armazenamento suficiente para fazer isso, recomendo deixar o banco de dados antigo até ter certeza de que está tudo bem com o novo, renomear isto:
ALTER DATABASE your_database RENAME TO your_database_backup;
-
criar banco de dados com nova codificação :
CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;
-
importar dados do dump criado antes :
PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database
você precisa definir a codificação do cliente psql para uma que você tinha no banco de dados antigo.
Alterar a codificação em tempo real não é possível, pois exigiria reescrever a maioria dos dados internos do banco de dados, o que é quase igual à recriação do db que descrevi.
É possível apenas alterar as informações internas do postgres sobre o banco de dados e quaisquer novos dados após essa alteração serão salvos corretamente, porém seus dados existentes podem ser corrompidos .