Mysql
 sql >> Database >  >> RDS >> Mysql

Come convertire un database MySQL in codifica UTF-8

Questo articolo descrive come convertire il set di caratteri di un database MySQL nella codifica UTF-8 (nota anche come Unicode). Il set di codifica dei caratteri UTF-8 supporta molti alfabeti e caratteri per un'ampia varietà di lingue.

Sebbene MySQL supporti il ​​set di codifica dei caratteri UTF-8, spesso non viene utilizzato come set di caratteri predefinito durante la creazione di database e tabelle. Di conseguenza, molti database utilizzano il set di caratteri latini, che può essere limitante a seconda dell'applicazione.

Determinazione del set di codifica dei caratteri corrente

Per determinare quale set di codifica dei caratteri sta attualmente utilizzando un database o una tabella MySQL:

  1. Accedi al tuo account A2 Hosting SSH.
  2. Alla riga di comando, digita il seguente comando, sostituendo username con il tuo nome utente:
    mysql -u username -p
  3. Al prompt Immettere la password, digitare la password. Quando si digita la password corretta, viene visualizzato il prompt mysql>.
  4. Per visualizzare il set di codifica dei caratteri corrente per un particolare database, digitare il comando seguente al prompt mysql>. Sostituisci dbname con il nome del database:

    SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "dbname";
  5. Per visualizzare la codifica dei caratteri corrente impostata per una particolare tabella in un database, digitare il comando seguente al prompt mysql>. Sostituisci dbname con il nome del database e tablename con il nome della tabella:

    SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "dbname" AND T.table_name = "tablename";
  6. Per uscire da mysql programma, digita \q al prompt di mysql>.

Conversione della codifica dei caratteri impostata in UTF-8

Assicurati di eseguire il backup del database prima di iniziare questa procedura! Puoi eseguire il backup di un database MySQL utilizzando cPanel, phpMyAdmin o mysqldump programma.

Per convertire la codifica dei caratteri impostata su UTF-8:

  1. Accedi al tuo account A2 Hosting SSH.
  2. Crea un file di testo denominato .my.cnf . Per fare ciò, puoi utilizzare un editor di testo come Vim o Nano. Questa procedura mostra come utilizzare Nano. Nella riga di comando, digita il seguente comando:
    nano .my.cnf
  3. Aggiungi le seguenti righe al file, sostituendo username con il tuo nome utente e password con la tua password (assicurati che la password sia racchiusa tra virgolette):

    [client]
    user=username
    password="password"
  4. Quando le modifiche sono complete, premi Ctrl+X, digita y per salvare il file, quindi premi Invio.
  5. Per modificare la codifica del set di caratteri in UTF-8 per tutte le tabelle nel database specificato, digitare il comando seguente nella riga di comando. Sostituisci dbname con il nome del database:

    mysql --database=dbname -B -N -e "SHOW TABLES" | awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' | mysql --database=dbname
  6. Al termine del comando, digita il comando seguente per avviare mysql programma:

    mysql
  7. Per modificare la codifica del set di caratteri in UTF-8 per il database stesso, digitare il comando seguente al prompt mysql>. Sostituisci dbname con il nome del database:

    ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;
  8. Per uscire da mysql programma, digita \q al prompt di mysql>.
  9. Per eliminare il .my.cnf file, digita il seguente comando nella riga di comando:

    rm .my.cnf
  10. Per verificare che la codifica del set di caratteri sia ora impostata su UTF-8, segui i passaggi della procedura Determinare il set di codifica dei caratteri corrente sopra.

Maggiori informazioni

Per ulteriori informazioni su UTF-8 e Unicode, visitare http://en.wikipedia.org/wiki/UTF-8.