Criando base de dados no PostgreSQL com encoding diferente

Como criar uma base de dados UTF8 em um servidor em LATIN1 ou como criar uma base de dados LATIN1 em um servidor em UTF8?
O PostgreSQL tem dessas coisas. Ele não permite que se crie Bases de Dados com Encoding diferentes em um mesmo template.
Hoje tentei criar uma nova base de dados em UTF8 e me deparei com o seguinte:
bash-4.1$ psql psql (9.3.5) Digite "help" para ajuda. postgres=# CREATE DATABASE teste WITH ENCODING='UTF8'; ERRO: codificação "UTF8" não corresponde a configuração regional "pt_BR.iso88591" DETALHE: A definição de LC_TYPE escolhida requer codificação "LATIN1". postgres=#
Isso acontece porque o locale do S.O. está em latin1 e quando foi instalado o PostgreSQL ele absorve esta configuração.
Quando tentei instalar em um encoding diferente do padrão definido ele reclamou por não estar de acordo com o template padrão que é o template1.
Para conseguir criar uma base em um encoding diferente é necessário utilizar um outro template e no meu caso utilizei o template0.
postgres=# CREATE DATABASE posts WITH ENCODING='UTF8' LC_COLLATE='en_US.utf8' LC_CTYPE='en_US.utf8' TEMPLATE=template0; CREATE DATABASE postgres=#
O mesmo pode ser feito quando o locale do sistema está em UTF8 e se deseja criar uma base em LATIN1.
Espero ter ajudado.
2 Responses
YOU SHOULD SET AN EXAMPLE OF UTF-8 TO LATIN1
El proceso es similar. Sólo tiene que cambiar la codificación de origen y la de destino.