Em primeiro lugar, a resposta de Daniel é a opção correta e segura.
Para o caso específico de mudar de SQL_ASCII para outra coisa, você pode trapacear e simplesmente cutucar o catálogo pg_database para reatribuir a codificação do banco de dados. Isso pressupõe que você já armazenou caracteres não ASCII na codificação esperada (ou que simplesmente não usou caracteres não ASCII).
Então você pode fazer:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'
Isso não mudará o agrupamento do banco de dados, apenas como os bytes codificados são convertidos em caracteres (então agora
length('£123')
retornará 4 em vez de 5). Se o banco de dados usar o agrupamento 'C', não deve haver nenhuma alteração na ordenação das strings ASCII. Você provavelmente precisará reconstruir quaisquer índices que contenham caracteres não ASCII. Adverte emptor. O despejo e o recarregamento fornecem uma maneira de verificar se o conteúdo do banco de dados está realmente na codificação que você espera, e isso não acontece. E se você tiver alguns dados codificados incorretamente no banco de dados, o resgate será difícil. Então, se você puder, despeje e reinicialize.