Forzare UTF-8 via MySQL

By Luca Bigon at 1 Settembre, 2008, 10:59 pm

Nell’articolo pubblicato sabato scorso dal titolo “Possibili problemi con Latin1” manca un aspetto fondamentale da ricordare una volta convertito il proprio database MySQL e i files del proprio sito dal charset ISO-8859-1 a UTF-8.

MySQL tende infatti ad aprire una connessione con il proprio server utilizzando il charset latin1 (ISO-8859-1) fintanto che non lo si convince del contrario; questo potrebbe creare dei spiacevoli problemi durante la visualizzazione dei testi delle pagine, in particolar modo di quelli che presentano al loro interno caratteri speciali quali gli accenti; per evitare che ciò accada è consigliato ricordare a MySQL di utilizzare una connessione in UTF-8 richiamando la funzione mysql_set_charset(), nel caso utilizziate le vecchie librerie MySQL, oppure mysqli::set_charset() qualora si utilizzino le nuove librerie MySQLi

// Connessione al DB
$db = mysql_connect('localhost', 'myuser', 'mypassword') or
   die('Problemi di connessione al database remoto');
mysql_set_charset('utf8', $db);
mysql_select_db('mydb');

// Esecuzione delle query
mysql_query('SELECT * FROM users WHERE 1', $db);
...

oppure

// Connessione al DB
$db = new MySQLi('localhost', 'myuser', 'mypassword', 'mydb') or
   die('Problemi di connessione al database remoto');
$db->set_charset('utf8');

//Esecuzione della query
$rs = $db->query('SELECT * FROM users WHERE 1');

Così facendo si avranno alla sorgente i dati memorizzati in UTF-8 (nel DB), i files HTML e/o PHP codificati in UTF-8 e la connessione tra il client e il server MySQL avverrà anch’essa in UTF-8, garantendo la correttezza nella gestione e nella visualizzazione delle informazioni gestite.

Categories : MySQL | PHP


Non c’è ancora nessun commento.

Lascia un commento