:::: MENU ::::

Caracteres especiais – UTF8 / ISO-8859-1

Eu migrei todos os meus arquivos de iso-8859-1 para utf-8 (padrão), entretanto, acabei descobrindo que no banco de dados haviam entrado caracteres especiais: û ÃŒ Ã© e por aí vai.

Uma forma que encontrei pra resolver este problema foi criar um replace no banco de dados para que os caracteres então volte para o formato correto.

ATENÇÃO: Aqui funcionou, mas teste muito, mas muito mesmo antes de realizar este procedimento no banco de dados.

1
2
3
4
5
6
7
8
9
10
<?php
/**
* Cria string de update de caracteres estranhos
*/
$aCaracteres = explode(',', 'ñ,ç,á,é,í,ó,ú,ä,ë,ï,ö,ü,à,è,ì,ò,ù,ã,õ,â,ê,î,ô,û,Ñ,Ç,Á,É,Í,Ó,Ú,Ä,Ë,Ï,Ö,Ü,À,È,Ì,Ò,Ù,Ã,Õ,Â,Ê,Î,Ô,Û');
foreach($aCaracteres as $sCaractere) {
	$encode = utf8_encode($sCaractere);
	$sql = "UPDATE tabela SET campo = REPLACE( campo, '{$encode}', '$sCaractere' );";
	echo "{$sql}\n";
}

Resultado

UPDATE tabela SET campo = REPLACE( campo, 'ñ', 'ñ' );
UPDATE tabela SET campo = REPLACE( campo, 'ç', 'ç' );
UPDATE tabela SET campo = REPLACE( campo, 'á', 'á' );
UPDATE tabela SET campo = REPLACE( campo, 'é', 'é' );
UPDATE tabela SET campo = REPLACE( campo, 'í', 'í' );
UPDATE tabela SET campo = REPLACE( campo, 'ó', 'ó' );
UPDATE tabela SET campo = REPLACE( campo, 'ú', 'ú' );
UPDATE tabela SET campo = REPLACE( campo, 'ä', 'ä' );
UPDATE tabela SET campo = REPLACE( campo, 'ë', 'ë' );
UPDATE tabela SET campo = REPLACE( campo, 'ï', 'ï' );
UPDATE tabela SET campo = REPLACE( campo, 'ö', 'ö' );
UPDATE tabela SET campo = REPLACE( campo, 'ü', 'ü' );
UPDATE tabela SET campo = REPLACE( campo, 'Ã ', 'à' );
UPDATE tabela SET campo = REPLACE( campo, 'è', 'è' );
UPDATE tabela SET campo = REPLACE( campo, 'ì', 'ì' );
UPDATE tabela SET campo = REPLACE( campo, 'ò', 'ò' );
UPDATE tabela SET campo = REPLACE( campo, 'ù', 'ù' );
UPDATE tabela SET campo = REPLACE( campo, 'ã', 'ã' );
UPDATE tabela SET campo = REPLACE( campo, 'õ', 'õ' );
UPDATE tabela SET campo = REPLACE( campo, 'â', 'â' );
UPDATE tabela SET campo = REPLACE( campo, 'ê', 'ê' );
UPDATE tabela SET campo = REPLACE( campo, 'î', 'î' );
UPDATE tabela SET campo = REPLACE( campo, 'ô', 'ô' );
UPDATE tabela SET campo = REPLACE( campo, 'û', 'û' );
UPDATE tabela SET campo = REPLACE( campo, 'Ñ', 'Ñ' );
UPDATE tabela SET campo = REPLACE( campo, 'Ç', 'Ç' );
UPDATE tabela SET campo = REPLACE( campo, 'Á', 'Á' );
UPDATE tabela SET campo = REPLACE( campo, 'É', 'É' );
UPDATE tabela SET campo = REPLACE( campo, 'Í', 'Í' );
UPDATE tabela SET campo = REPLACE( campo, 'Ó', 'Ó' );
UPDATE tabela SET campo = REPLACE( campo, 'Ú', 'Ú' );
UPDATE tabela SET campo = REPLACE( campo, 'Ä', 'Ä' );
UPDATE tabela SET campo = REPLACE( campo, 'Ë', 'Ë' );
UPDATE tabela SET campo = REPLACE( campo, 'Ï', 'Ï' );
UPDATE tabela SET campo = REPLACE( campo, 'Ö', 'Ö' );
UPDATE tabela SET campo = REPLACE( campo, 'Ãœ', 'Ü' );
UPDATE tabela SET campo = REPLACE( campo, 'À', 'À' );
UPDATE tabela SET campo = REPLACE( campo, 'È', 'È' );
UPDATE tabela SET campo = REPLACE( campo, 'ÃŒ', 'Ì' );
UPDATE tabela SET campo = REPLACE( campo, 'Ã’', 'Ò' );
UPDATE tabela SET campo = REPLACE( campo, 'Ù', 'Ù' );
UPDATE tabela SET campo = REPLACE( campo, 'Ã', 'Ã' );
UPDATE tabela SET campo = REPLACE( campo, 'Õ', 'Õ' );
UPDATE tabela SET campo = REPLACE( campo, 'Â', 'Â' );
UPDATE tabela SET campo = REPLACE( campo, 'Ê', 'Ê' );
UPDATE tabela SET campo = REPLACE( campo, 'ÃŽ', 'Î' );
UPDATE tabela SET campo = REPLACE( campo, 'Ô', 'Ô' );
UPDATE tabela SET campo = REPLACE( campo, 'Û', 'Û' );

So, what do you think ?