Base di conoscenze

1 000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!

Forzare una codifica durante la connessione a un database MySQL

Questa guida permette di risolvere i problemi legati ai caratteri speciali (accenti, emoji, ecc.) che non si visualizzano correttamente o appaiono sotto forma di simboli come ??, spesso dovuti a un cattivo codificamento durante la connessione a MySQL.

 

Premessa

  • Per impostazione predefinita, MySQL utilizza UTF-8.
  • I server MySQL recenti sono generalmente configurati per utilizzare UTF-8 o UTF-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 ad 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):

  1. Clicca qui per accedere alla gestione del tuo prodotto sul Manager Infomaniak (hai bisogno di aiuto?).
  2. Clicca direttamente sul nome assegnato al prodotto interessato.
  3. Clicca su MariaDB nel menu laterale sinistro.
  4. Scegli il charset predefinito:
  5. Salva le tue modifiche in fondo alla pagina.

 

Forzare una codifica specifica (latin1 ad esempio)

Se devi lavorare con un database in latin1 (ISO-8859-1), devi allineare esplicitamente la codifica durante la connessione, a seconda del tuo ambiente.

Sulle offerte attuali, inserisci il codice seguente in un file user.ini situato alla 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");

 

Sulle vecchie formule di hosting, forza la connessione MySQL in latin1 tramite il file .htaccess situato alla radice del tuo hosting:

php_value mysql.connect_charset latin1
php_value mysqli.connect_charset latin1
php_value pdo_mysql.connect_charset latin1

Questa FAQ è stata utile?