Quem trabalha com TI já tá acostumado: todo dia tem um problema novo que exige uma solução nova (não tem um dia que eu passo sem pesquisar algo no Google que vá me ajudar a resolver algum problema técnico). Isso, na verdade, é motivador, pois sempre estamos em movimento, aprendendo coisas novas.
No texto de hoje vou explicar resumidamente o que eu fiz para corrigir uma codificação errada em um processo de migração.
A codificação
A codificação pode ser entendida como o conjunto de caracteres que aquela aplicação vai utilizar. Frequentemente isso é usado em sistemas de bancos de dados. Por exemplo atualmente utiliza-se muito o UTF-8, que serve para padronizar os sistemas (caso contrário teríamos vários problemas para converter caracteres, por exemplo).
Quando uma codificação não é a ideal para aquele ambiente (navegador, por exemplo), os caracteres especiais (palavras acentuadas na maioria das vezes – ã, ô, é…) são substituídos por um código que os representa.
O código ‘ç’ representa o ‘ç’.
A migração
Frequentemente tenho que fazer a migração de sites entre dois ambientes. De um servidor para outro, de um diretório para outro etc. Na maioria das vezes eu faço isso entre dois sistemas já em WordPress, o que fica muito mais fácil. Porém ás vezes ocorre de um sistema não estar em WordPress, daí é necessário eu adaptá-lo antes de migrar. Foi o que ocorreu aqui.
O Problema
Em 2018 foi necessário implantar o WordPress em um site de um cliente, que possuía um sistema construído apenas para ele, ou seja, não é um CMS[1] e não é nenhuma biblioteca/framework/script pronto. O analista contratado simplesmente desenvolveu do zero o site para a pessoa.
O site foi desenvolvido em PHP, com JS e banco MySQL. O fato de o banco ser MySQL facilitou bastante por eu já ser familiarizado e poder acessar acesso via PhpMyAdmin[2].
Teoricamente eu teria que migrar os dados do sistema legado para o WordPress, fazendo a correção da codificação de acentos, cedilha e afins. Isso foi necessário pois, no sistema legado, a codificação (já explicada acima) substituiu os caracteres por alguma razão desconhecida.
A Solução
1. Acessar PhpMyAdmin origem
Neste passo é necessário ter acesso ao servidor do ambiente de origem, com credenciais (usuário e senha) e permissões no banco de dados.
2. Acessar WordPress do site destino
Naturalmente o novo ambiente já deve estar devidamente instalado e configurado.
3. Converter caracteres problemáticos
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘çã’, ‘çã’),
`post_excerpt` = replace(post_excerpt, ‘çã’, ‘çã’),
`post_content` = replace(post_content, ‘çã’, ‘çã’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘ç’, ‘ç’),
`post_excerpt` = replace(post_excerpt, ‘ç’, ‘ç’),
`post_content` = replace(post_content, ‘ç’, ‘ç’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘ó’, ‘ó’),
`post_excerpt` = replace(post_excerpt, ‘ó’, ‘ó’),
`post_content` = replace(post_content, ‘ó’, ‘ó’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘á’, ‘á’),
`post_excerpt` = replace(post_excerpt, ‘á’, ‘á’),
`post_content` = replace(post_content, ‘á’, ‘á’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘ã’, ‘ã’),
`post_excerpt` = replace(post_excerpt, ‘ã’, ‘ã’),
`post_content` = replace(post_content, ‘ã’, ‘ã’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘é’, ‘é’),
`post_excerpt` = replace(post_excerpt, ‘é’, ‘é’),
`post_content` = replace(post_content, ‘é’, ‘é’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘ô’, ‘ô’),
`post_excerpt` = replace(post_excerpt, ‘ô’, ‘ô’),
`post_content` = replace(post_content, ‘ô’, ‘ô’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘ê’, ‘ê’),
`post_excerpt` = replace(post_excerpt, ‘ê’, ‘ê’),
`post_content` = replace(post_content, ‘ê’, ‘ê’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘ú’, ‘ú’),
`post_excerpt` = replace(post_excerpt, ‘ú’, ‘ú’),
`post_content` = replace(post_content, ‘ú’, ‘ú’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘â’, ‘â’),
`post_excerpt` = replace(post_excerpt, ‘â’, ‘â’),
`post_content` = replace(post_content, ‘â’, ‘â’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘Ã’, ‘í’),
`post_excerpt` = replace(post_excerpt, ‘Ã’, ‘í’),
`post_content` = replace(post_content, ‘Ã’, ‘í’);
UPDATE
`tb7_posts`
SET
`post_title` = replace(post_title, ‘º’, ‘º’),
`post_excerpt` = replace(post_excerpt, ‘º’, ‘º’),
`post_content` = replace(post_content, ‘º’, ‘º’);
O script acima faz a substituição dos caracteres e deixa as postagens com o texto bonitinho 🙂
Dúvidas? Deixe aqui nos comentários. Será um prazer te ajudar.
Links & Referências
[1] CMS: Content Management System: Sistema Gerenciador de Conteúdo – WordPress, Drupal, Joomla. são exemplos de CMS`s.
[2] PHPMyAdmin é um sistema gestor de bancos de dados MySQL desenvolvido em PHP e que pode ser executado diretamente no navegador. É um dos serviços mais comuns em hospedagens web.
[3] Plugin que permite a importação facilitada de algumas informações (posts, por exemplo): https://www.wpallimport.com/