Vi parliamo in questo articolo di quello che accade nei risultati a video quando visualizzate una codifica al posto di un ‘altra in PHP + Mysql, tipicamente noto come i caratteri strani o accentati. Come detto sopra questo solitamente accade abbastanza sovente quanto copia incolliamo sul nostro database o mettiamo da input dei valori codificati latina e li rivisualizziamo come UTF-8. Il problema è molto comune , una soluzione abbastanza arrangiata è quella di ricorrere a str_replace , ossia sostituire i caratteri spuri con altri caratteri , ma sicuramente non è la soluzione più elegante e nemmeno la più corretta in quanto si finisce col perdere dei caratteri ed è un processo che impiega del tempo e delle risorse. La soluzione corretta è quella invece di ricorrere alle seguenti funzioni. Supponiamo di dovere immettere un testo in input su un db Mysql con php avendo in entrata dei caratteri in codfica latin qualcosa e di volere in uscita UTF-8 unicode ISO, quindi ci troviamo nella seguente situazione
$db_host = "host"; $db_user = "username"; $db_password = "password";
$database = "nome_database"; $db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE) die ("Errore connessione db");
mysql_query("SET NAMES 'utf8';");
Come potete vedere la funzione sottolineata in rosso effettua automaticamente il mapping desiderato. Così i dati che troveremo inseriti nel database saranno già nel formato corretto quando andremo a fare la Select. Oppure un’altra funzione molto utilizzata in questo caso è la seguente
$string=iconv("UTF-8", "ISO-8859-1", $string);
Vediamo adesso cosa accade in lettura dei dati immessi nel database e visualizzati a video. Supponiamo che tali dati che abbiamo immesso siano in codifica latin, ossia che il programmatore non abbia effettuato il procedimento descritto sopra.
In questo caso potete utilizzare la funzione
$string=iconv("UTF-8//IGNORE", "ISO-8859-1", $string);
Come potete vedere è comparsa la funzione di errore che indica alla funzione di ignorare al codice eventuali errori che possono comparire a video e quindi ottenenere il risultato desiderato