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

Java Server Pages - classement lors de l'insertion dans MySql ?

Les points d'interrogation viennent de ceci :

  • Le client a un caractère valide (bon), et
  • Le SET NAMES est d'accord avec l'encodage que le client a (bon), mais
  • Le CHARACTER SET de la colonne cible n'inclut pas le caractère voulu (mauvais).

Exemples :

  • latin1 ne 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.
  • latin2 et cp1250 peut gérer le tchèque, donc les conversions entre eux sont généralement correctes, mais pas entre l'un ou l'autre et latin1
  • utf8mb4 est un sur-ensemble de utf8 .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 utf8mb4 sur la ou les colonnes du tableau fonctionne probablement dans tous les cas.
  • Sinon, choisissez un CHARACTER SET pour 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.