Eu estava com o seguinte problema. Tinha que recuperar um sistema de cliente e o backup do banco de dados que a hospedagem restaurou estava toda com encode utf8 porém os dados em ISO e ASCII isso foi um saco, pois converter as colunas não funcionava de nenhum jeito e ainda teria que criar um script em php pra fazer isso. Foi então que pensei em procurar alguma solução rápida na internet, achei a loucura abaixo de fazer replace em tudo na mão pra executar no banco:
UPDATE `produtos` SET `titulo` = REPLACE(`titulo` ,"á","á");
UPDATE `produtos` SET `titulo` = REPLACE(`titulo` ,"ä","ä");
UPDATE `produtos` SET `titulo` = REPLACE(`titulo` ,"é","é");
UPDATE `produtos` SET `titulo` = REPLACE(`titulo` ,"í©","é");
UPDATE `produtos` SET `titulo` = REPLACE(`titulo` ,"ó","ó");
--- ... veja no link tudo se isso lhe ajuda.
Isso é ridículo, não é mesmo? Além de ser muito louco daria muito trabalho. Foi então que sem querer acabei achando uma função que me ajudou muito e resolver o problema de forma rápida e direta, ainda mais devido a urgência do cliente em retornar com o sistema, segue abaixo o código:
<?php
// funcao gambiarra em php pra resolver problemas de dados não utf8 e converter corretamente.
// Fonte: https://berseck.wordpress.com/2010/09/28/transformar-utf-8-para-acentos-iso-com-php/comment-page-1/
function utf8Fix($msg){
$accents = array("á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç", "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç");
$utf8 = array("á","à ","â","ã","ä","é","è","ê","ë","Ã","ì","î","ï","ó","ò","ô","õ","ö","ú","ù","û","ü","ç","Ã","À","Â","Ã","Ä","É","È","Ê","Ë","Ã","ÃŒ","ÃŽ","Ã","Ó","Ã’","Ô","Õ","Ö","Ú","Ù","Û","Ü","Ç");
$fix = str_replace($utf8, $accents, $msg);
return $fix;
}
?>
Espero que tenha lhe ajudado também, sinceramente me salvou. Créditos do código é do Berseck.
Até galera.