Ответ 1
Короче говоря, вы не можете сделать это только с помощью phpPgAdmin или SQL, не рискуя существующим повреждением данных. Вы должны экспортировать все данные, создать базу данных с правильным кодированием и восстановить экспортированные данные.
Вот как вы должны действовать:
-
создать дамп базы данных:
pg_dump your_database > your_database.sql
это сохранит вашу базу данных в формате sql, в кодировке, которую вы в настоящее время имеете.
-
удалить базу данных (или переименовать ее):
DROP DATABASE your_database
Если у вас достаточно памяти для этого, я рекомендую оставить старую базу данных, пока вы не убедитесь, что все в порядке с новым, переименовать:
ALTER DATABASE your_database RENAME TO your_database_backup;
-
создать базу данных с новой кодировкой:
CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;
-
импортировать данные из дампа, созданного до:
PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database
вам нужно установить кодировку клиента psql в ту, что у вас была в старой базе данных.
Изменение кодирования "на лету" невозможно, так как потребовалось бы переписать большую часть внутренних данных базы данных, что почти равно воссозданию описанного мной метода db.
Можно просто изменить внутренние сообщения postgres о базе данных и любых новых данных после того, как это изменение будет сохранено правильно, однако ваши существующие данные могут быть повреждены.