Za prvé, Danielova odpověď je správná a bezpečná možnost.
Pro konkrétní případ změny z SQL_ASCII na něco jiného můžete podvádět a jednoduše šťouchnout do katalogu pg_database, abyste znovu přiřadili kódování databáze. To předpokládá, že jste již uložili jakékoli jiné znaky než ASCII v očekávaném kódování (nebo jste prostě nepoužili žádné jiné znaky než ASCII).
Pak můžete:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'
Tím se nezmění řazení databáze, pouze způsob, jakým se kódované bajty převádějí na znaky (takže nyní length('£123')
vrátí 4 místo 5). Pokud databáze používá řazení 'C', nemělo by dojít k žádné změně řazení řetězců ASCII. Pravděpodobně však budete muset znovu sestavit všechny indexy obsahující jiné než ASCII znaky.
Varování emptor. Dumping a reloading poskytuje způsob, jak zkontrolovat, zda je obsah vaší databáze skutečně v kódování, které očekáváte, a to nikoli. A pokud se ukáže, že máte v databázi nějaká špatně zakódovaná data, bude záchrana obtížná. Takže pokud je to možné, vypište a znovu inicializujte.