Este artigo tem como objetivo ensinar como modificar o encoding do banco de dados PostgreSQL 9.1 de ISO-8859-1 (ISO LATIN1) para UTF-8, em um sistema operacional Ubuntu Server 11.10.
Ao instalar o PostgreSQL, ele inicializa automaticamente uma área de armazenamento de banco de dados no disco. Chamamos isso de um cluster de banco de dados. Um cluster de banco de dados é uma coleção de bancos de dados que são gerenciados por uma única instância de um servidor de banco de dados rodando.
O encoding deste cluster por padrão vai possuir o mesmo encoding do sistema operacional.
Ao se criar um banco de dados novo, tal banco vai possuir o encoding do seu cluster.
Ou seja, se o sistema operacional possui o encoding Latin1, o cluster padrão do PostgreSQL chamado de “main” também vai possuir este encoding. E os bancos de dados criados neste cluster também terão o mesmo encoding.
Existem três opções para modificar o encoding do banco de dados:
Antes de efetuar qualquer umas dessas opções, certifique-se de fazer backup dos seus bancos de dados.
1 – Modificar o encoding do sistemas operacional para UTF-8 e reinstalar o PostgreSQL. Neste caso ao reinstalar o PostgreSQL ele cria o cluster padrão com o encoding do sistema operacional.
2 – Criar um novo cluster com o encoding UTF-8. Neste caso você terá um novo cluster rodando em uma nova porta, por exemplo: 5433;
3 – Apagar o cluster padrão e recriá-lo com o encoding UTF-8;
Neste artigo vamos executar a terceira opção, por entender, que ela é a que exige menos esforço e tempo.
1 – Modificar o encoding do sistema operacional através do seguinte comando:
update-locale LANG=pt_BR.UTF-8 LC_MESSAGES=pt_BR.UTF-8
2 – Reinicie o computador para aplicar a mudança do encoding.
3 – Para destruir o cluster padrão, digite o comando abaixo(9.1 é a versão do PostgreSQL):
$sudo pg_dropcluster –stop 9.1 main
4 – Para criar o novo cluster padrão digite:
$sudo pg_createcluster -e UTF-8 –start 9.1 main
Pronto, agora bastar criar seus bancos de dados e eles já terão a codificação UTF-8;