ok, ho risolto in questo modo:
- ho modificato il php.ini inserendo la stringa default_charset = "utf-8" (ricordatevi di riavviare il server dopo aver salvato)
- il charset utilizzato dall'html dev'essere impostato sull'utf-8 tramite il tag
Codice PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- il database deve essere anch'esso in utf-8; potete controllarlo eseguendo la query
Codice PHP:
SHOW VARIABLES LIKE 'c%'
- se avete smanettato può essere che i campi delle tabelle utilizzino una codifica diversa, controllateli bene
- ogni connessione da php a mysql deve avere la stessa codifica del database; utilizzate la seguente query per connettervi correttamente:
Codice PHP:
$connection = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database, $connection);
// ora recuperate la codifica del database e applicatela alla connessione che avete appena aperto
$db_charset = mysql_query( "SHOW VARIABLES LIKE 'character_set_database'" );
$charset_row = mysql_fetch_assoc( $db_charset );
mysql_query( "SET NAMES '" . $charset_row['Value'] . "'" );
unset( $db_charset, $charset_row );
In questo modo potete usare anche caratteri accentati negli URL, e tutto funziona; ricordatevi di inserire i record sui quali avevate problemi poichè sono ancora con la codifica vecchia
Spero sia utile a qualcuno, soprattutto utilizzando il mod_rewrite per la riscrittura degli URL la codifica è veramente un grosso problema da affrontare