Benvenuti!

Benvenuti in questo raccoglitore di appunti, bookmark, esempi, trucchi e guide legati al mondo dell'informatica!
Qui ho pensato di raccogliere le informazioni che trovo quando ho qualche problema da risolvere... sia che si tratti di programmazione, che di configurazioni...
Spero che queste informazioni possano esservi utili come lo sono state per me!

Buona lettura! :)

martedì 18 dicembre 2007

Problemi di Codifica Caratteri MySQL/PHP

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.