Cet article est destiné à changer le charset par défaut de MySQL via le fichier my.cnf afin d’utiliser utf8_unicode_cl et non latin1_swedish_ci. C’est très simple, mais j’ai quand même bidouillé un peu plus que je ne l’aurait souhaité (phénomène récurant de ma vie).
Je ne crée pas de base de données MySQL de façon quotidienne. La plupart du temps, je le fais via phpMyAdmin.
En mode console, je ne tiens pas particulièrement à taper :
CREATE DATABASE <ma_base> CHARACTER SET utf8 COLLATE utf8_unicode_cl;
Je préfère plutôt :
CREATE DATABASE <ma_base>;
En mode console ou via phpMyAdmin, ma nouvelle base se retrouve en latin1_swedish_ci. Ça ne change presque rien, mais ça me tanne quand même étant donnée que j’utilise utf8_unicode_ci dans mes tables.
J’ai commencé par ceci [voir plus bas pour la véritable solution]
SHOW GLOBAL VARIABLES;
SET GLOBAL `character_set_client` = 'utf8';
SET GLOBAL `character_set_connection` = 'utf8';
SET GLOBAL `character_set_results` = 'utf8';
SET GLOBAL `character_set_server` = 'utf8';
SET GLOBAL `character_set_database` = 'utf8';
SET GLOBAL `collation_connection` = 'utf8_unicode_ci';
SET GLOBAL `collation_database` = 'utf8_unicode_ci';
SET GLOBAL `collation_server` = 'utf8_unicode_ci';
Le problème survient lorsque je redémarre MySQL : les variables par défaut sont réécrites.
SOLUTION :
nano my.cnf
# à ajouter dans la section [mysqld]
character_set_server = utf8
collation_server = utf8_unicode_ci
/etc/init.d/mysql restart
Mes nouvelles bases sont dorénavant créées en utf8_unicode_ci ce qui améliore de façon substantielle ma qualité de vie. 😀