La plupart des emojis iOS utilisent des points de code au-dessus du plan multilingue de base de la table Unicode. Par exemple, 😄 (VISAGE SOURIANT AVEC BOUCHE OUVERTE ET YEUX SOURIANTS) est à U+1F604.
Maintenant, voir http://dev.mysql.com/ doc/refman/5.5/en/charset-unicode.html .
MySQL avant la version 5.5 ne prend en charge que l'UTF-8 pour le BMP, qui inclut les caractères entre U+0000 et U+FFFF (c'est-à-dire qu'un sous-ensemble de l'UTF-8 réel ; le utf8
de MySQL n'est pas du vrai UTF-8). Il ne peut pas stocker le caractère au point de code U+1F604 ou d'autres "caractères hauts" similaires. MySQL 5.5+ prend en charge utf8mb4
(UTF-8 réel), utf16
et utf32
, capables d'encoder ces caractères. Si vous utilisez MySQL 5.5+, utilisez l'un de ces jeux de caractères de colonne et assurez-vous que vous utilisez le même jeu de caractères pour votre encodage de connexion vers/depuis PHP. Si vous êtes sur MySQL <5.5, vous devrez utiliser un BLOB
type de colonne. Ce type stocke les octets bruts sans se soucier des "caractères" qu'ils contiennent. L'inconvénient est que vous ne pourrez pas rechercher ou indexer efficacement le texte.