How to support full Unicode in MySQL databases · Mathias Bynens
Petit truc qui m'a bien saôulé ce week-end, du coup je m'explique.
De puis la dernière mise à jour de mon blog sur le jonglage (jonglage.bwatt.eu), les accents des derniers articles uploadés apparaissent bizarrement. En gros, problème d'encoding.
Après un petit test, pas de souci quand je lance le code directement en local, mais sur mon environnement de dev, oui. Point commun avec la prod ? Ça tourne sur Docker. Le code n'est donc pas en cause.
Après avoir fouillé un moment, je me suis aperçu que ma mariadb sur Docker n'était pas en utf8, mais en latin1 ! Et il semble que ça soit la configuration par défaut de mariadb (je ne comprend pas qu'on puisse avoir ça par défaut). Quand on installe par les paquets sur archlinux ou sur Lint, c'est assez intelligent pour mettre en utf8. Mais il semble qu'ils aient oublié de faire ça sur la dernière image Docker...
La solution ? Relancer mariadb avec des flags pour être en utf8 (mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --character-set-client-handshake=FALSE). Ou plutôt en utf8bm4. Car j'ai après dû changer l'encodage de mes tables et database en utf8, et suis tombé sur ceta rticle, expliquand qu'il faut utiliser utf8bm4 et non utf8. Je poste ça donc ici.
Mon Sep 18 22:21:07 2017 - permalink -
-
https://mathiasbynens.be/notes/mysql-utf8mb4