1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Forzare una codifica durante la connessione a un database MySQL
Questa guida consente di risolvere i problemi legati ai caratteri speciali (accenti, emoji, ecc.) che non vengono visualizzati correttamente o appaiono sotto forma di simboli come ??, spesso dovuto a una cattiva codifica durante la connessione a MySQL.
Premessa
- Per impostazione predefinita, MySQL utilizza
UTF-8
. - I server MySQL recenti sono generalmente configurati per utilizzare
UTF-8
oUTF-8MB4
per impostazione predefinita.- Questo è adatto alla maggior parte dei casi, in particolare per le lingue internazionali e gli emoji.
- Prendete anche visione di questa altra guida per imparare a evitare di causare problemi di codifica con i caratteri non europei e gli emoji nei vostri sviluppi.
Definire il charset MySQL / MariaDB predefinito (Server Cloud)
Con un Server Cloud Infomaniak, è possibile definire il charset predefinito (utf8
o utf8mb4
):
- Clicca qui per accedere alla gestione del tuo prodotto su Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome assegnato al prodotto interessato.
- Fai clic su MariaDB nel menu laterale sinistro, quindi scegli il charset predefinito:
Se non hai ancora migrato verso MariaDB, il principio è lo stesso:
Forzare una codifica specifica (ad esempio, latin1
)
Se devi lavorare con un database in latin1
(ISO-8859-1), è necessario allineare esplicitamente l'encodage durante la connessione, a seconda del tuo ambiente.
Per le offerte attuali, inserisci il seguente codice in un file user.ini
situato nella radice del tuo hosting:
mysql.connect_charset = "latin1"
mysqli.connect_charset = "latin1"
pdo_mysql.connect_charset = "latin1"
o in PHP (API MySQL):
mysql_query("SET CHARACTER SET latin1");
Nei piani di hosting precedenti, forzate la connessione MySQL in latin1
tramite il file .htaccess
situato nella radice del vostro hosting:
php_value mysql.connect_charset latin1
php_value mysqli.connect_charset latin1
php_value pdo_mysql.connect_charset latin1