Erreur de valeur de chaîne incorrecte avec l'insertion UTF-8 dans MySQL via JDBC
Lors de la tentative d'insertion de texte Unicode dans une base de données MySQL à l'aide de JDBC, les utilisateurs peuvent rencontrer une erreur « Valeur de chaîne incorrecte », en particulier lorsque le texte contient la séquence d'octets xF0. Ce problème se manifeste souvent avec des ensembles de données volumineux et peut être attribué aux limitations d'encodage par défaut de MySQL.
Cause de l'erreur :
L'encodage utf8 de MySQL ne prend en charge que les caractères Unicode représentables dans trois octets. Cependant, certains caractères Unicode, tels que xF0x90x8Dx83, nécessitent quatre octets en UTF-8. Tenter d'insérer de tels caractères dans une colonne codée en utf8 déclenche l'erreur.
Solution :
Pour résoudre le problème, deux approches peuvent être adoptées :
Changer de colonne Encodage :
Mettez à jour l'encodage de la colonne vers utf8mb4, qui prend en charge les caractères Unicode de quatre octets. Cela peut être fait à l'aide de l'instruction SQL suivante :
ALTER TABLE <table_name> MODIFY COLUMN <column_name> TEXT COLLATE utf8mb4;
Configurer les propriétés du serveur :
Si vous utilisez MySQL version 5.5 ou ultérieure, définissez la propriété Character_set_server dans le fichier de configuration MySQL sur utf8mb4 pour permettre au serveur de gérer l'Unicode à quatre octets caractères.
character_set_server = utf8mb4
Configuration du connecteur/J :
Le connecteur/J détecte automatiquement le paramètre UTF-8 lorsque le paramètre CharacterEncoding est omis de la chaîne de connexion. Par conséquent, pour les jeux de caractères UTF-8 à quatre octets, laissez CharacterEncoding de côté et définissez Character_set_server comme décrit ci-dessus.
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!