1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Risolvere i problemi di codifica delle pagine
Questa guida è per te se stai riscontrando problemi di codifica delle pagine e caratteri strani che appaiono sulle tue pagine.
Codifica universale
Se stai avendo problemi di codifica delle pagine, è importante verificare che la codifica della tua pagina sia impostata su UTF-8. UTF-8 è una codifica universale che supporta la maggior parte dei caratteri utilizzati nel mondo. È possibile che alcuni file contengano caratteri incompatibili con la codifica UTF-8. In tal caso, devi convertirli in UTF-8 usando un editor di testo appropriato.
Se la codifica HTML della pagina è, ad esempio, in UTF-8 mentre il database è in latin-1, potrebbe capitare che gli accenti non vengano interpretati correttamente da MySQL. Se le pagine contengono caratteri speciali (arabi, cinesi, accenti), potrebbero essere visualizzati correttamente sul tuo sito web ma non su phpMyAdmin, o viceversa...
Usa un editor di testo in grado di salvare i tuoi file in UTF-8. Se importi file di testo con codice SQL all'interno, devi modificarli con un software che salva in UTF-8.
UTF-8 in PHP
Per forzare gli header del sito in UTF-8 utilizzando PHP, puoi utilizzare la funzione header()
con il parametro Content-Type
. Ecco un esempio di codice che consente di forzare la codifica dei caratteri in UTF-8:
<?php
header('Content-Type: text/html; charset=utf-8');
?>
UTF-8 tramite .htaccess
Per forzare la codifica dei caratteri in UTF-8 tramite il file .htaccess del tuo sito, per il contenuto HTML aggiungi:
AddDefaultCharset utf-8
Header set Content-Type "text/html; charset=utf-8"
e per il contenuto PHP aggiungi:
php_value default_charset UTF-8
php_value mbstring.internal_encoding UTF-8
UTF-8 in HTML
Per specificare la codifica dei caratteri in UTF-8 nel codice HTML, puoi utilizzare il tag meta charset
:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Titolo della pagina</title>
</head>
<body>
<!-- Contenuto della pagina -->
</body>
</html>
Assicurati anche che tutti i file utilizzati sul tuo sito web, come file CSS e script JavaScript, siano codificati in UTF-8. Ciò garantisce che tutti i caratteri sul tuo sito web verranno visualizzati correttamente.
UTF-8 nel database
Per (ri)dichiarare la codifica dei database e delle tabelle in UTF-8 in phpMyAdmin, puoi seguire questi passaggi:
- Accedi al tuo pannello di controllo phpMyAdmin
- Fai clic sulla scheda "Operazioni" in alto
- Nella sezione "Opzioni della tabella", cerca la riga "Collazione" e fai clic sul menu a discesa
- Seleziona un'opzione di collazione che utilizza la codifica UTF-8, ad esempio
utf8_general_ci
- Fai clic sul pulsante "Esegui" in fondo alla pagina per salvare le modifiche
Aggiungi la funzione PHP mysql_set_charset alla connessione creata da mysql_connect per determinare la codifica di quella connessione (se non la specifici, il valore predefinito di questo parametro può variare da un server all'altro):
$connection = mysql_connect($server, $username, $password);
mysql_set_charset('utf8', $connection);
Puoi anche modificare questa impostazione predefinita su tutto il tuo hosting seguendo questa documentazione.
Una volta stabilita la connessione MySQL da uno script PHP, puoi anche specificare il tipo di charset UTF8 con questi comandi:
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
Accenti / caratteri speciali
Se recuperi un dump MySQL (backup) e lo importi nel tuo database, potrebbe accadere che tutti gli accenti vengano sostituiti da caratteri strani (come "?").
I backup dei database MySQL vengono eseguiti in formato UTF8. Gli accenti sono codificati su due byte. L'importazione di questi backup non presenta problemi sui server, ma devi adattare la configurazione locale per importare database in UTF8 sul tuo computer.
Ad esempio, puoi fare una conversione utf8 -> latin1 del file SQL prima di importarlo.
In caso contrario, durante l'importazione del database, specifica semplicemente che il tuo file di input è in formato iso-latin1 (sezione importazione, "Set di caratteri del file") e l'importazione avverrà correttamente.
Quando i caratteri speciali vengono convertiti in '?', è probabile che il file che stai importando sia in un formato non UTF-8 e che il software sia configurato per importare un file UTF-8. Linux può convertire in UTF-8 con il comando 'iconv'.