Emojis dans contraintes de requêtes : like vs =

Pourquoi = ne semble-t'il pas fonctionner ?

Le problème exposé dans ce sujet a été résolu.

Bonjour !

Hier, j’ai rencontré un cas qui m’interpelle.

Dans une base de données, je stocke des émoticônes. Ce sont des valeurs qui me servent ensuite à discriminer des enregistrements.

Je pensais naïvement faire WHERE colonne = '🧭', mais curieusement, plutôt que de me ressortir aucun résultat, c’est comme si la contrainte n’avait pas existé et je les ai tous récupérés. J’ai évidemment pensé à changer pour WHERE colonne LIKE '🧭', et là j’ai récupéré ce que j’attendais.

Ma base de données les enregistre correctement tout comme ils s’affichent bien là où j’en ai besoin. Le plus surprenant pour moi est que j’ai constaté ce comportement sur MySQL 5.5 et 5.7…

Est-ce un truc de MySQL qui ne gère pas très bien les emojis ou une mauvaise configuration dans ce que j’utilise qui fait qu’on ne peut pas utiliser colonne = '🧭' ?

Merci d’avance  :)

+0 -0

Je me connecte bien avec utf8mb4 (à force de le rabâcher aux débutants, j’ai fini par l’intégrer  :-° ), ma colonne n’est qu’en utf8mb4_unicode_ci, je pensais que cet ordonnancement suffirait… Certainement que utf8mb4_bin fonctionnerait, et d’après la réponse que tu mentionnes, utf8mb4_unicode_520_ci aussi, mais j’en suis moins sûr.

Edit

Finalement, c’était facile de tester, et oui, utf8mb4_unicode_520_ci fonctionne aussi. Mais par contre, je ne crois pas qu’il soit disponible sous MySQL 5.5, je me contenterai de la version binaire là-bas.

+0 -0

Je sais que ça ne répond pas au problème de base (qui semble résolu) mais… Passer à MySQL 8 résout ces problèmes je crois. Et puis bon c’est release depuis un bon moment, ça vaut le coup d’y passer non ? ^^

Pour ce qui est des problèmes avec UTF-8… Préparez-vous parce que de plus en plus de logiciels sont compatibles avec UTF-16… Et ça pique. xD

Si seulement le serveur de production pouvait être mis à jour… mais c’est pour un mandataire qui paie le minimum pour être hébergé (et en même temps, vu le trafic sur le site, il n’a pas tort), donc pas trop le choix.

Edit (après le "+1" de mon VDD)

Juste pour dire que (et j’en reste quasiment coi) MySQL 5.5.30 propose utf8mb4_unicode_520_ci. Pourtant, c’est pas comme si utf8mb4 existait depuis MySQL 5.5.3, en fait…  >_<

Edit 2

C’est pas un mince affaire, ces histoires de charset… Heureusement que l’UTF-8 devait être universel :-°

viki53

Le jeu de caractères l’est, preuve en est que les caractères s’enregistraient bien et étaient rendus correctement. C’est la manière de les trier qui est différente pour chaque (groupe de) langue. Reste que je n’imaginais absolument pas que ce serait un souci pour faire des conditions dessus.

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte