För det första är Daniels svar det korrekta, säkra alternativet.
För det specifika fallet att byta från SQL_ASCII till något annat, kan du fuska och helt enkelt peta i pg_database-katalogen för att omtilldela databaskodningen. Detta förutsätter att du redan har lagrat några icke-ASCII-tecken i den förväntade kodningen (eller att du helt enkelt inte har använt några icke-ASCII-tecken).
Sedan kan du göra:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'
Detta kommer inte att ändra sammanställningen av databasen, bara hur de kodade byten omvandlas till tecken (så nu length('£123')
kommer att returnera 4 istället för 5). Om databasen använder 'C'-sortering, bör det inte göras någon ändring av beställningen för ASCII-strängar. Du kommer förmodligen att behöva bygga om alla index som innehåller icke-ASCII-tecken.
Varning emptor. Dumpning och omladdning ger ett sätt att kontrollera att ditt databasinnehåll faktiskt är i den kodning du förväntar dig, och det gör det inte. Och om det visar sig att du hade en del felaktigt kodad data i databasen, kommer det att bli svårt att rädda. Så om du kan, dumpa och återinitiera.