1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Risolvere un problema di codifica delle pagine
Questa guida ti riguarda se riscontri problemi di codifica delle pagine e caratteri anomali che appaiono sulle tue pagine.
Codifica universale
Se si verificano problemi di codifica delle pagine, è importante verificare che la codifica della pagina sia ben definita in UTF-8 UTF-8 è una codifica universale che supporta la maggior parte dei caratteri utilizzati in tutto il mondo. Può accadere che alcuni file contengano caratteri incompatibili con la codifica UTF-8. In questo caso, è necessario convertirli in UTF-8 utilizzando un editor di testo appropriato.
Se la codifica della pagina HTML è p.ex UTF-8 Il database è in latino-1 Gli accenti non saranno 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...
Utilizzare un editor di testo in grado di salvare i file in UTF-8. Se si importano file di testo con codice SQL all'interno, è necessario modificarli con un software che salva in UTF-8.
UTF-8 in PHP
Per forzare gli header del sito in UTF-8 utilizzando PHP, è possibile 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 via .htaccess
Per forzare la codifica dei caratteri in UTF-8 tramite il file .htaccess del tuo sito, per aggiungere contenuti HTML:
AddDefaultCharset utf-8
Header set Content-Type "text/html; charset=utf-8"
e per il contenuto PHP aggiungere:
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, è possibile utilizzare il tag meta charset
:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Titre de la page</title>
</head>
<body>
<!-- Contenu de la page -->
</body>
</html>
Assicurati inoltre che tutti i file utilizzati sul tuo sito web, come i file CSS e gli script JavaScript, siano codificati anche in UTF-8. Ciò garantisce che tutti i caratteri sul tuo sito web saranno visualizzati correttamente.
UTF8 nel database
Per (ri)dichiarare la codifica di database e tabelle in UTF-8 in phpMyAdmin, è possibile seguire i seguenti passaggi:
- Accedi al tuo pannello di controllo phpMyAdmin.
- Fare clic sulla scheda "Operazioni" in alto.
- Nella sezione "Opzioni tabella", cercare la riga "Collazione" e fare clic sul pulsante a discesa.
- Seleziona un'opzione snack che utilizza la codifica UTF-8, ad esempio
utf8_general_ci
. - Fare clic sul pulsante "Esegui" nella parte inferiore della pagina per salvare le modifiche.
Aggiungere la funzione PHP mysql_set_charset
alla connessione creata da mysql_connect per determinare la codifica di questa connessione (se non la si specifica, il valore predefinito di questa impostazione può variare da server a server):
$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
Quando si recupera un backup dal database MySQL (chiamato "dump") e lo si importa nel proprio database, è possibile che gli accenti (come E, A, O) appaiano come simboli strani, come punti interrogativi (ad esempio "?" al posto di un accento).
Questo accade perché i backup MySQL vengono generalmente creati utilizzando un formato speciale chiamato UTF-8
In questo formato, le lettere con accenti utilizzano più spazio (sono codificate su due byte, un po 'come due "unità " di dati per carattere). Sui server funziona bene, ma se lavori sul tuo personal computer, potrebbe essere necessario regolare alcune configurazioni in modo che l'importazione avvenga correttamente utilizzando UTF-8
Il problema dei caratteri strani di solito si verifica quando c'è un disallineamento di codifica tra il file di backup e l'importazione. Questo può accadere se il file è codificato in un formato (p.es. UTF-8
) ma MySQL si aspetta un'altra codifica (p.es. latin1
).
Ecco alcune soluzioni:
- Converti file : È possibile convertire il file di backup di
UTF-8
in un altro formato, chiamatolatin1
, prima di importarlo nel tuo database. Questo può impedire che gli accenti vengano interpretati male, ma comporta delle limitazioni. Se il file contiene caratteri che non possono essere rappresentati inlatin1
(come alcuni caratteri speciali o non europei), potresti perdere questi caratteri durante la conversione. È quindi una soluzione da utilizzare con cautela e dipende dal tipo di dati presenti nel file SQL. - Specificare il formato corretto durante l'importazione : Se non è stato convertito il file, è possibile specificare, durante l'importazione, che il file è in formato
iso-latin1
(Quando si importa un file SQL, è possibile indicare esplicitamente che il file è in ISO-8859-1, noto anche come latino1). Ciò consente di allineare la codifica del file con quella prevista da MySQL, che di solito risolve il problema dei caratteri visualizzati in modo errato.
Se vedi punti interrogativi invece di accenti, probabilmente significa che il file di backup è in un formato diverso da UTF-8
, ma che il vostro software tenta di importarlo come se fosse in UTF-8
Per evitare questo, in Linux, è possibile utilizzare un comando chiamato iconv
per convertire il file in UTF-8 prima dell'importazione. Questo assicura che la codifica sia coerente con le aspettative di MySQL.