Aggiornamento:
Risposta breve:dovresti usare quasi sempre utf8mb4
set di caratteri e utf8mb4_unicode_ci
confronto.
Per modificare il database:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Vedi:
-
Il commento di Aaron su questa risposta Come fare per fare in modo che MySQL gestisca correttamente UTF-8
-
Qual è la differenza tra utf8_general_ci e utf8_unicode_ci
-
Guida alla conversione:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Risposta originale:
MySQL 4.1 e versioni successive hanno un set di caratteri predefinito di UTF-8. Puoi verificarlo nel tuo my.cnf
file, ricordati di impostare entrambi client e server (default-character-set
e character-set-server
).
Se hai dati esistenti che desideri convertire in UTF-8, scarica il tuo database e importalo di nuovo come UTF-8 assicurandoti:
- usa
SET NAMES utf8
prima di interrogare/inserire nel database - usa
DEFAULT CHARSET=utf8
durante la creazione di nuove tabelle - a questo punto il tuo client e server MySQL dovrebbero essere in UTF-8 (vedi
my.cnf
). ricorda che anche le lingue che usi (come PHP) devono essere UTF-8. Alcune versioni di PHP utilizzeranno la propria libreria client MySQL, che potrebbe non essere compatibile con UTF-8.
Se vuoi migrare i dati esistenti ricordati di eseguire prima il backup! Un sacco di strani tagli di dati possono verificarsi quando le cose non vanno come previsto!
Alcune risorse:
- completare la migrazione UTF-8 (cdbaby.com)
- articolo su Prontezza UTF-8 delle funzioni php (nota che alcune di queste informazioni non sono aggiornate)