Накратко, не можете да направите това само с 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 информация за базата данни и всички нови данни след тази промяна ще бъдат запазени правилно, но съществуващите ви данни може да се повредят .