Après avoir remarqué qu'une application avait tendance à rejeter les e-mails aléatoires en raison d'erreurs de valeur de chaîne incorrecte, je suis allé bien et j'ai changé de nombreuses colonnes de texte pour utiliser le utf8
jeu de caractères de colonne et la colonne par défaut collate ( utf8_general_ci
) afin de les accepter. Cela a corrigé la plupart des erreurs et empêché l'application de recevoir des erreurs SQL lorsqu'elle touchait également des e-mails non latins.
Malgré cela, certains e-mails provoquent toujours des erreurs de valeur de chaîne incorrectes par le programme: (Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
La colonne de contenu est une MEDIUMTEXT
datatybe qui utilise le utf8
jeu de caractères de colonne et l' utf8_general_ci
assemblage de colonnes. Il n'y a pas d'indicateur que je peux basculer dans cette colonne.
En gardant à l'esprit que je ne veux pas toucher ni même regarder le code source de l'application sauf si c'est absolument nécessaire:
- Quelle est la cause de cette erreur? (oui, je sais que les e-mails sont pleins d'ordures aléatoires, mais je pensais que utf8 serait assez permissif)
- Comment puis-je y remédier?
- Quels sont les effets probables d'un tel correctif?
Une chose que j'ai envisagée était de passer à un varchar utf8 ([un grand nombre]) avec le drapeau binaire activé, mais je ne connais pas assez bien MySQL et je n'ai aucune idée si une telle correction a du sens.