Salve,
posto questo messaggio solo dopo una settimana passata a spaccarmi la testa dietro le righe di codice e seguendo milioni di guide sui Charset.
Preannuncio che prima di oggi non mi ero mai posto il problema di dover passare i dati da un form PHP ad un db MySql, quindi ammetto che l'errore potrebbe essere grossolano, cerco solo qualcuno che me lo faccia notare.
Allora il caso è semplice:
da un form html passo i dati ad una chiamata ajax ad una classe php che fa' l'inserimento a DB e mi torna un messaggio di avvenuto o meno inserimento. I caratteri accentati mi vengono mostrati correttamente fino a che non parte la chiamata ajax alla classe PHP, dopodichè i caratteri accentati vengono trasformati in visualizzazione.
Ho impostato le pagine e le tabelle in questo modo(seguendo molti tutorial in giro sul web):
- Pagina php con codice html si apre così:
<?php mb_internal_encoding('UTF-8'); ?>
- nell'<head> html ho inserito questo:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- nella pagina php che raccoglie la quuery e la esegue faccio questo encoding sul parametro passato:
$sql = utf8_encode($_POST['query']);
- una volta eseguita la quuery faccio questo:
mysql_query("SET NAMES 'UTF8'");
- la COLLATION del Db è impostata su:
utf8_general_ci
- Tutti i campi di testo di tutte le tabelle sono impostati con la COLLATION utf8_general_ci
Seguendo le varie guide su internet mi sembra che tutte dicano più o meno di impostare questi campi così. Perchè nel mio database continuano ad esserci invece solo caratteri strani al posto delle lettere aggiornate?
Spero che qualcuno mi possa illuminare