1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Risolvere un problema di codifica delle pagine
Questa guida è pertinente per te se stai riscontrando problemi di codifica delle pagine e caratteri anomali che appaiono sulle tue pagine.
Codifica Universale
Se riscontri problemi di codifica delle pagine, è importante controllare 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. Può succedere che alcuni file contengano caratteri incompatibili con la codifica UTF-8. In questo caso, devi convertirli in UTF-8 utilizzando un editor di testo adeguato.
Se la codifica della pagina HTML è, ad esempio, UTF-8 mentre il database è in latin-1, gli accenti non verranno interpretati correttamente da MySQL. Se le pagine contengono caratteri speciali (testi arabi, cinesi, accenti), possono essere visualizzati correttamente sul tuo sito web, ma non in phpMyAdmin, o viceversa...
Utilizza un editor di testo in grado di salvare i tuoi file in UTF-8. Se importi file di testo con codice SQL all'interno, devono essere modificati con un software che salva in UTF-8.
UTF-8 in PHP
Per forzare le intestazioni del sito in UTF-8 utilizzando PHP, puoi utilizzare la funzione header()
con il parametro Content-Type
. Ecco un esempio di codice che forza 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 che anche tutti i file utilizzati sul tuo sito web, come i file di stile CSS e gli script JavaScript, siano codificati in UTF-8. Ciò garantisce che tutti i caratteri sul tuo sito web vengano visualizzati correttamente.
UTF-8 nei 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 di phpMyAdmin
- Fai clic sulla scheda "Operazioni" nella parte superiore
- Nella sezione "Opzioni della tabella", cerca la riga "Collation" e fai clic sul pulsante a discesa
- Seleziona un'opzione di collation che utilizza la codifica UTF-8, ad esempio
utf8_general_ci
- Fai clic sul pulsante "Esegui" nella parte inferiore della pagina per salvare le modifiche
Aggiungi la funzione PHP mysql_set_charset
alla connessione creata da mysql_connect
per determinare la codifica di questa connessione (se non la specifichi, il valore predefinito di questo parametro può variare da server a server):
$connection = mysql_connect($server, $username, $password);
mysql_set_charset('utf8', $connection);
Puoi anche modificare questo parametro predefinito 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 nella tua base di dati, può succedere che tutti gli accenti vengano sostituiti da caratteri strani (come "?").
I backup di MySQL vengono effettuati in formato UTF8. I caratteri accentati vengono quindi codificati su due byte. L'importazione di questi backup non pone problemi sui server, tuttavia, è necessario adattare la tua configurazione locale per importare i database in UTF8 sul tuo computer.
Puoi ad esempio eseguire una conversione da utf8 a latin1 del file SQL prima dell'importazione.
In alternativa, durante l'importazione del database, è sufficiente specificare che il tuo file di input è in formato iso-latin1 (sezione di importazione, "Set di caratteri del file") e l'importazione procederà correttamente.
Quando i caratteri speciali vengono convertiti in '?', è probabile che il file che stai importando sia in un formato non UTF-8 e il software sia configurato per importare un file UTF-8. Linux può effettuare la conversione in UTF-8 con il comando 'iconv'.