Maison > Article > base de données > Pourquoi mes Emojis disparaissent-ils dans MySQL ?
Encodage des caractères MySQL et stockage des Emoji
Nous avons une application iPhone qui transmet des émoticônes à un backend PHP, qui les insère ensuite dans un MySQL base de données. Cependant, une fois l'insertion réussie, la valeur stockée apparaît vide.
Les insertions de texte uniquement réussissent, mais lorsque des émoticônes sont incluses, seul le texte est inséré. Les suggestions visant à modifier le type de champ en Blog (pour accueillir les données d'image) se sont révélées inadaptées en raison d'insertions occasionnelles de non-émoticônes et de faibles besoins de stockage.
Solution : Compatibilité des jeux de caractères MySQL
Le problème réside dans l'encodage des caractères de MySQL. Les emojis iOS utilisent principalement des points de code dépassant le plan multilingue de base (BMP) de la table Unicode. Par exemple, l'emoji « Visage souriant avec bouche ouverte et yeux souriants » réside dans U 1F604.
Les versions MySQL antérieures à 5.5 ne prennent en charge que UTF-8 pour BMP, limitant le stockage aux caractères sous U FFFF. Par conséquent, MySQL ne peut pas stocker l'emoji U 1F604 ou d'autres "caractères élevés".
Pour résoudre ce problème, utilisez MySQL 5.5 et sélectionnez utf8mb4 (UTF-8 authentique), utf16 ou utf32 comme jeu de caractères de colonne. De plus, assurez-vous que la connexion MySQL entre PHP et la base de données utilise le même jeu de caractères.
Pour les versions MySQL inférieures à 5.5, utilisez le type de colonne BLOB, qui stocke les octets bruts sans tenir compte des « caractères ». Bien que cela permette le stockage des emoji, cela compromet l'efficacité de la recherche et de l'indexation du texte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!