Il problema di codifica dei caratteri MySQL è dove il tuo database MySQL causa la visualizzazione errata dei caratteri UTF8 (come å, ä e ö). Questo perché per impostazione predefinita, MySQL utilizza il set di caratteri latin1. Questo problema è diventato importante a causa della natura globale dei contenuti web in questi giorni. Puoi risolverlo impostando la codifica dei caratteri MySQL su UTF8. Questo può essere fatto in diversi modi.
- Esegui una query "SET NAMES 'utf8'" all'inizio di ogni connessione:questo costringerà MySQL a utilizzare UTF8 per tutta la durata di quella connessione. Questa è una buona opzione se non hai accesso al file my.cnf (linux/mac) / my.ini (windows).
- Trova e modifica il file my.cnf (linux/mac) / my.ini (windows) sul tuo database server. Aggiungi le seguenti righe a mysqld sezione:[mysqld] default-character-set=utf8 skip-character-set-client-handshake Ora, se riavvii il server MySQL, la codifica dei caratteri MySQL dovrebbe essere UTF8 per impostazione predefinita
- E se avessi già un database? Come convertire il suo contenuto in UTF8? È possibile utilizzare le seguenti 3 query. Sostituisci DATABASE_NAME, TABLE_NAME e FIELD_NAME con i tuoi valori. altera la tabella TABLE_NAME modifica FIELD_NAME blob; altera il database DATABASE_NAME charset=utf8; altera la tabella TABLE_NAME modifica FIELD_NAME varchar(255) set di caratteri utf8; Converti il campo in BLOB, è un tipo di campo binario. Quindi cambiamo il set di caratteri del database in utf8. Infine riconvertiamo il nostro campo in testo o varchar.
Puoi controllare la codifica dei tuoi caratteri MySQL con la seguente query.
Codifica dei caratteri MySQL predefinita
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | latin1 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Codifica dei caratteri MySQL richiesta
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Dovrai anche assicurarti che il tuo framework di programmazione come Django, Code Igniter, ecc. utilizzi la codifica UTF8.