Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL renvoie une erreur de valeur de chaîne incorrecte

C'est le caractère à la fin du tweet qui pose problème.

Il ressemble à un personnage "emoji", c'est-à-dire un smiley japonais, mais il ne s'affiche pas pour moi dans Chrome ou Safari.

Il existe des problèmes connus de stockage des caractères utf de 4 octets dans certaines versions de MySQL. Apparemment, vous devez utiliser utf8mb4 pour représenter des caractères UTF de 4 octets, car le jeu de caractères utf8 normal ne peut représenter que des caractères d'une longueur maximale de 3 octets et ne peut donc pas stocker de caractères en dehors du Plan multilingue de base

http://dev.mysql.com/doc /refman/5.5/en/charset-unicode-utf8mb4.html

Ce qui est nouveau pour moi car cela signifie essentiellement que le type de données utf8 dans MySQL n'est pas vraiment utf8.

Il existe des suggestions sur la façon de gérer cela iciComment insérer le caractère utf-8 mb4 (emoji dans ios5) dans mysql ? dont :

"Assurez-vous également que votre couche d'application définit le jeu de caractères de ses connexions à la base de données sur utf8mb4. Vérifiez que cela se produit réellement - si vous exécutez une ancienne version de la bibliothèque client mysql de votre framework choisi, il se peut qu'elle n'ait pas été compilée avec le support utf8mb4 et il ne définira pas le jeu de caractères correctement. Sinon, vous devrez peut-être le mettre à jour ou le compiler vous-même"

Si vous utilisez Connector/J, vous devez définir character_set_server=utf8mb4 dans la configuration de connexion.

Tous vos jeux de caractères doivent être utf8mb4, que vous avez peut-être essayé mais qui ne sont pas encore définis.