- 1 1. Introduzione
- 2 2. Principali cause dei problemi di codifica dei caratteri
- 3 3. Comprendere la configurazione del set di caratteri in MySQL
- 4 4. Prevenire i problemi di codifica dei caratteri
- 5 5. Cosa fare se si verifica la corruzione dei caratteri
- 6 6. FAQ (Domande frequenti)
- 6.1 Q1: Perché il testo giapponese appare come “???” in MySQL?
- 6.2 Q2: Come posso cambiare il set di caratteri di una tabella esistente?
- 6.3 Q3: Come posso prevenire la corruzione dei caratteri nella console di Windows?
- 6.4 Q4: Come posso prevenire la corruzione dei caratteri in un ambiente Docker?
- 6.5 Q5: Dove si trova il file di configurazione di MySQL?
- 7 7. Summary
1. Introduzione
Quando si crea un database con MySQL, i problemi di codifica dei caratteri (moji‑bake) sono tra i più comuni che gli utenti incontrano. Quando si verifica la corruzione dei caratteri, i dati non possono essere visualizzati o inseriti correttamente, il che può compromettere significativamente le operazioni aziendali e la gestione del sistema. Questo articolo spiega le cause principali dei problemi di codifica dei caratteri in MySQL, delinea soluzioni efficaci e fornisce passaggi concreti per la risoluzione dei problemi.
2. Principali cause dei problemi di codifica dei caratteri
I problemi di codifica dei caratteri in MySQL possono generalmente essere classificati nelle seguenti tre categorie:
Incongruenza nelle impostazioni di codifica dei caratteri
- MySQL supporta più set di caratteri. Se la codifica dei caratteri tra client e server non corrisponde, si verifica la corruzione dei caratteri.
Differenze di configurazione tra client e server
- Se la stringa inviata dal client (ad esempio phpMyAdmin o uno strumento da riga di comando) non corrisponde alla configurazione del set di caratteri del server, possono sorgere problemi.
Impostazioni errate del set di caratteri per database o tabelle
- Se non si specifica il
CHARACTER SETappropriato durante la creazione di un database o di una tabella, possono verificarsi incongruenze successivamente nella manipolazione dei dati.
3. Comprendere la configurazione del set di caratteri in MySQL
Capire correttamente la configurazione del set di caratteri di MySQL è il primo passo per prevenire la corruzione dei caratteri. Rivediamo i seguenti elementi.
Principali variabili di configurazione del set di caratteri
character_set_server: Il set di caratteri predefinito per l’intero servercharacter_set_client: Il set di caratteri delle stringhe inviate dal clientcharacter_set_database: Il set di caratteri predefinito per il database
Come verificare le impostazioni attuali
- Eseguire il comando seguente per controllare la configurazione corrente del set di caratteri.
SHOW VARIABLES LIKE 'character_set%';
- In base ai risultati dell’output, identificare eventuali incongruenze di configurazione.
4. Prevenire i problemi di codifica dei caratteri
Per prevenire in anticipo la corruzione dei caratteri, è essenziale una corretta configurazione e impostazione dell’ambiente.
Regolare il file di configurazione di MySQL (my.cnf/my.ini)
- Per modificare le impostazioni lato server, modificare
my.cnfomy.inicome mostrato di seguito.[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci
Impostare la codifica dei caratteri per database e tabelle
- Quando si crea un database, specificare esplicitamente il set di caratteri con il comando seguente.
CREATE DATABASE sample_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- Per modificare una tabella esistente:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
Regolare l’ambiente client
- Quando si utilizza uno strumento da riga di comando, specificare il set di caratteri al momento della connessione.
mysql --default-character-set=utf8mb4 -u root -p

5. Cosa fare se si verifica la corruzione dei caratteri
Se si presentano problemi di codifica dei caratteri, seguire i passaggi seguenti per risolverli.
Verificare la configurazione
- Utilizzare il comando
SHOW VARIABLESintrodotto in precedenza per verificare i valori di configurazione attuali.
Backup e ripristino dei dati
- Durante il backup dei dati, assicurarsi di specificare esplicitamente il set di caratteri.
mysqldump --default-character-set=utf8mb4 -u root -p database_name > backup.sql
- Specificare lo stesso set di caratteri durante il ripristino.
mysql --default-character-set=utf8mb4 -u root -p database_name < backup.sql
Passaggi di risoluzione dei problemi
- Controllare la configurazione con il comando
SHOW VARIABLES, aggiornarla con le impostazioni corrette se necessario, quindi testare nuovamente. Esaminare i file di log e i messaggi di errore per identificare la causa principale.
6. FAQ (Domande frequenti)
Q1: Perché il testo giapponese appare come “???” in MySQL?
- La configurazione del set di caratteri del client o del server potrebbe essere impostata su
latin1o su un’altra codifica incompatibile. Cambiare l’impostazione inutf8mb4.
Q2: Come posso cambiare il set di caratteri di una tabella esistente?
- Puoi cambiarlo usando il seguente comando.
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
Q3: Come posso prevenire la corruzione dei caratteri nella console di Windows?
- Usa il comando
chcp 65001per cambiare la pagina di codice in UTF-8.
Q4: Come posso prevenire la corruzione dei caratteri in un ambiente Docker?
- Crea un file
my.cnfsul lato host e montalo nella posizione appropriata all’interno del container per applicare la configurazione.
Q5: Dove si trova il file di configurazione di MySQL?
- Su Linux, si trova tipicamente in
/etc/my.cnfo/etc/mysql/my.cnf. Su Windows, si trova nella directory di installazione di MySQL.
7. Summary
I problemi di codifica dei caratteri in MySQL possono essere risolti tramite una corretta configurazione e una risoluzione sistematica dei problemi. Usa i passaggi descritti in questo articolo per verificare e regolare le impostazioni secondo necessità. Rivedendo regolarmente la tua configurazione, puoi ridurre al minimo il rischio di corruzione dei caratteri e mantenere un ambiente di database stabile.


