Corsi on-line

Ajax, PHP e la codifica dei caratteri

State lavorando su un progetto in Ajax? State eseguendo delle operazioni di INSERT sui database tramite chiamata asincrona ed avete riscontrato dei problemi col charset? Avete verificato e sul MySQL charset e collation sono OK ma le lettere accentate si trasformano in caratteri strani?
No problem… non state impazzendo… il “problema” (il virgolettato è d’obbligo) è da imputarsi ad Ajax.
Questa tecnologia, infatti, si basa sul formato XML e, come tale, utilizza una codifica del tipo UTF-8 e, pertanto, le nostre care lettere accentate non vengono riconosciute (in quanto non appartengono a questo set di caratteri).
Se processiamo un form con Ajax, quindi, il contenuto dei suoi campi dovrà essere filtrato prima di essere salvato nel database. Fortunatamente PHP mette a disposizione una funzione (utile nel 99% dei casi) che si chiama utf8_decode() la quale trasforma una stringa UTF-8 (quella che ci invia Ajax) in una ISO-8859-1. Vediamo un esempio:

// valore ricevuto da una funzione Ajax
$testo = $_POST['testo'];
// nella query uso utf8_decode
mysql_query("INSERT INTO tabella VALUES('" . utf8_decode($testo) . "')");
Post correlati
I più letti del mese
Tematiche