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
- As tabelas devem estar inicialmente com codificação latin1
- Para cada tabela, as colunas que armazenam texto devem estar na codificação latin1
- 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
- As tabelas devem mudar a configuração para utf8
- As colunas devem voltar ao seu tipo original
- BINARY(valor) -> CHAR(valor)
- VARBINARY(valor) -> VARCHAR(valor)
- TINYBLOB -> TINYTEXT
- BLOB -> TEXT
- MEDIUMBLOB -> MEDIUMTEXT
- LONGBLOB -> LONGTEXT
- 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
- Faça backup do seu banco de dados atual
- Baixe o nosso programa e coloque ele na mesma pasta em que está o arquivo wp-config.php
- Acesse a página no seu site, como por exemplo http://seusite.com/converter_latin1_para_utf8.php
- Vá no seu cliente de banco de dados (PHPMyAdmin) e execute o SQL gerado no passo 3
- No seu arquivo wp-config.php, confira se está sendo usado o utf8 em define(‘DB_CHARSET’, ‘utf8’);
- 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 =)
Galera, muito obrigado pela dica
fiz o que falaram utilizando a pagina php que gera o comando SQL
simplesmente perfeito!
Agradeço pela ajuda, abraço!
Bom, tive esta mensagem de erro:
Erro
consulta SQL:
ALTER TABLE wp_users MODIFY user_login varbinary( 60 )
Mensagens do MySQL : Documentação
#1283 – Column ‘user_login’ cannot be part of FULLTEXT index
Enfim, executei o SQL gerado e ele destruiu meu blog. Claro, fiz um backup antes, mas… ai ai, mais trabalheira. Em todo caso, valeu pela tentativa.
Abraço!
Bruno, valeu cara.
Muito bacana o tutorial. Vou converter o meu, por enquanto uso só a apresentação latin1 no wordpress, mas o banco continua utf8
Pingback: Como não escolher um domínio para o seu site