1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Evitare i problemi relativi all'utilizzo di caratteri insoliti e di codifica delle pagine
Quando diverse istanze si passano dei dati, possono verificarsi dei problemi di codifica del testo.
Ad esempio, se la codifica della pagina HTML è in UTF8 mentre il database è in latin-1, gli accenti non saranno interpretati correttamente da MySQL. Se le pagine contengono caratteri speciali (testi arabi, cinesi, accenti), potrebbero essere visualizzati correttamente sul suo sito, ma non in phpMyAdmin o viceversa.
Perché tutto funzioni, occorre specificare ovunque il charset utilizzato (UTF8 è il più semplice).
Utilizzare un editor di testo in grado di salvare i file in UTF8. Se si importano file di testo che contengono il codice SQL, occorre modificarli con un programma che salva in UTF8.
Forzare gli header del sito in UTF8 con questa funzione PHP:
header('Content-Type: text/html; charset=utf-8');
Aggiungerlo nei meta del codice HTML:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
Dichiarare la codifica dei database e delle tabelle in UTF8 in PHPMyAdmin (ad es. utf8_general_ci)
Aggiungere i seguenti righi nel file .htaccess della cartella /web:
php_value default_charset utf-8
php_value mbstring.internal_encoding UTF-8
Aggiungere la funzione PHP mysql_set_charset alla connessione creata da mysql_connect per determinare la codifica di tale connessione (se non viene specificato, il valore predefinito di questo parametro può variare da un server all'altro):
$connection = mysql_connect($server, $username, $password);
mysql_set_charset('utf8', $connection);
Può anche modificare questo parametro predefinito su tutto il suo hosting seguendo questa documentazione.
Una volta stabilita la connessione MySQL tramite uno script PHP, può anche specificare il tipo di charset UTF8 con questi comandi:
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
Se recupera un dump MySQL (backup) e lo importa nel suo database, può succedere che tutti gli accenti siano sostituiti da caratteri strani ("?" ad es.).
I backup delle banche MySQL avvengono nel formato UTF8. I caratteri accentati sono quindi codificati in due octet. L'importazione di questi backup non presenta problemi sui nostri server, tuttavia sta a lei adattare la sua configurazione domestica per l'importazione locale delle banche in UTF8 nella sua posta.
Può ad esempio fare una conversione utf8 -> latin1 del file SQL prima dell'importazione.
Altrimenti, durante l'importazione della banca, basta specificare che il file in ingresso è nel formato iso-latin1 (sezione importare, "Set di caratteri del file") e l'importazione avverrà correttamente.
Quando i caratteri speciali sono convertiti in '?', è probabile che li importi in formato non-UTF8 e il software è configurato per importare un file UTF-8. Linux può fare la conversione in UTF-8 con il comando 'iconv'.