Nas versões atuais do wordpress, o banco de dados usa a codificação utf8 para armazenar os dados, sendo inclusive definida na wp-config.php em define(‘DB_CHARSET’, ‘utf8’);

Mas antes que eles começassem a usar o utf8, o sistema utilizado era o latin1, que é, normalmente, o padrão dos bancos de dados criados no MySQL. Aqui no Uninuni estávamos utilizando o latin1 até algumas horas atrás quando eu resolvi consertar isso. Para resolver esse problema o próprio site do wordpress tem um passo a passo do que deve ser feito. Infelizmente não é tão simples quanto ir no PHPMyAdmin e mudar a tabela de latin1 para utf8, se fosse apenas isso eu nem estaria fazendo esse post.

Passo a Passo manual

  1. As tabelas devem estar inicialmente com codificação latin1
  2. Para cada tabela, as colunas que armazenam texto devem estar na codificação latin1
  3. Para cada tabela, as colunas que armazenam texto devem mudar o seu tipo para binário, de:
    • CHAR(valor) -> BINARY(valor)
    • VARCHAR(valor) -> VARBINARY(valor)
    • TINYTEXT -> TINYBLOB
    • TEXT -> BLOB
    • MEDIUMTEXT -> MEDIUMBLOB
    • LONGTEXT -> LONGBLOB
  4. As tabelas devem mudar a configuração para utf8
  5. As colunas devem voltar ao seu tipo original
    • BINARY(valor) -> CHAR(valor)
    • VARBINARY(valor) -> VARCHAR(valor)
    • TINYBLOB -> TINYTEXT
    • BLOB -> TEXT
    • MEDIUMBLOB -> MEDIUMTEXT
    • LONGBLOB -> LONGTEXT
  6. Prontinho

Para facilitar nossa vida o MyDigitalLife fez um programa em PHP que gera o código SQL que precisamos e então só temos que executar esse código no PHPMyAdmin. O programa, entretanto, apresenta alguns erros  na geração do código MySql, mas para alegria de todos e felicidade geral da nação (ou minha pelo menos) eu dei uma espiada no código e resolvi esses detalhes após mudar boa parte dele.

Passo a Passo usando o gerador

  1. Faça backup do seu banco de dados atual
  2. Baixe o nosso programa e coloque ele na mesma pasta em que está o arquivo wp-config.php
  3. Acesse a página no seu site, como por exemplo http://seusite.com/converter_latin1_para_utf8.php
  4. Vá no seu cliente de banco de dados (PHPMyAdmin) e execute o SQL gerado no passo 3
  5. No seu arquivo wp-config.php, confira se está sendo usado o utf8 em define(‘DB_CHARSET’, ‘utf8’);
  6. Tudo deve estar funcionando bem =)

Lembrando que o arquivo php apenas gera o código MySql, ele não altera as tabelas automaticamente. É preciso ir no seu cliente de banco de dados e executar o código. E não se esqueça de fazer backup dos seus dados antes de começar.

Espero que tenha sido útil =)