Non so a voi, ma io ho sempre avuto parecchi problemi a gestire correttamente i caratteri accentati (o comunque i caratteri speciali in genere) con PHP e MySQL. Tra ? nelle parole e sequenze di caratteri al posto delle accentate credevo di uscire pazzo.
Ho poi trovato, forse, dopo lunghi tentativi una soluzione al problema.
Il problema nasce dal fatto che, seppure il database sia confgurato per contenere i dati in UTF8, i dati nei campi siano scritti correttamente e le pagine web con codifica UTF8, la connessione al db avviene sempre con il set di caratteri Latin1.... sigh!
Per ovviare al problema basta, dopo aver effettuato la connesione al db, eseguire la sequente stringa SQL:
SET NAMES UTF8
ossia:
mysql_query("SET NAMES UTF8");
In questo modo il trasferimento dei dati avviene correttamente.
Attenzione: potrebbe essere necessario, quando poi da PHP si leggono e usano i dati del db, eseguire una decodifica dall'UTF8 per avere il testo corretto.
utf8_decode($row['campo']);
oppure anche:
htmlentities(utf8_decode($row['campo']));
per ottenerne la conversione in html.
martedì 18 dicembre 2007
Iscriviti a:
Post (Atom)