Les points d'interrogation viennent de ceci :
- Le client a un caractère valide (bon), et
- Le
SET NAMESest d'accord avec l'encodage que le client a (bon), mais - Le
CHARACTER SETde la colonne cible n'inclut pas le caractère voulu (mauvais).
Exemples :
latin1ne gère que les caractères d'Europe occidentale ; essayer de mettre un caractère d'Europe de l'Est ou tout autre caractère asiatique ne conviendra pas.latin2etcp1250peut gérer le tchèque, donc les conversions entre eux sont généralement correctes, mais pas entre l'un ou l'autre etlatin1utf8mb4est un sur-ensemble deutf8.Mettre un caractère utf8 dans utf8mb4 est correct, mais l'inverse entraînera un '?' dans certains cas.
Les caractères qui ont été convertis en '?' ne peut pas être récupéré à partir de la table.
Comment réparer les futurs INSERTs ?
- Utiliser
utf8mb4sur la ou les colonnes du tableau fonctionne probablement dans tous les cas. - Sinon, choisissez un
CHARACTER SETpour la ou les colonnes du tableau qui correspondent raisonnablement aux données du client.
La raison pour laquelle seuls certains caractères sont ? (en š?ž?? ) est parce que šž existent en latin1 mais pas les autres.
Conclusion :modifiez le CHARACTER SET dans la définition de table.