Maison > Article > base de données > Pourquoi les chaînes UTF-8 sont-elles tronquées lors de l'utilisation de JDBC avec MySQL ?
Des erreurs dans la gestion des chaînes UTF-8 MySQL dans JDBC
Une gestion incorrecte des chaînes UTF-8 dans MySQL via l'interface JDBC peut conduire à des données problèmes de corruption ou d’affichage. Cet article examine un scénario dans lequel les données insérées via JDBC apparaissent tronquées dans la base de données.
L'extrait de code fourni montre un programme Java qui établit une connexion à une base de données MySQL et insère du texte UTF-8 dans une table. Cependant, après vérification des données insérées, le texte ne s'affiche pas correctement, les caractères attendus étant remplacés par des points d'interrogation.
Le problème réside dans les paramètres d'encodage des caractères dans MySQL. Par défaut, MySQL utilise le jeu de caractères et le classement latin1, incompatibles avec UTF-8. Pour résoudre ce problème, les étapes suivantes sont cruciales :
1. Vérifier les paramètres de codage des caractères
Exécutez les commandes SQL suivantes pour afficher les paramètres de codage de caractères actuels :
show variables like 'character%'; show variables like 'collation%';
La sortie doit indiquer que le codage de caractères est défini sur utf8 pour le serveur et la base de données.
2. Configurer MySQL pour UTF-8
Si l'encodage n'est pas correct, modifiez-le en mettant à jour le fichier de configuration MySQL (my.cnf) en ajoutant les lignes suivantes :
[mysqld] character-set-server = utf8 character-set-filesystem = utf8
Vous pouvez également utiliser MySQL Workbench pour modifier visuellement ces paramètres.
3. Connectez-vous avec les paramètres d'URL appropriés
Lors de l'établissement de la connexion Java, incluez les paramètres suivants dans l'URL JDBC :
jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8
4. Supprimer les commandes inutiles
Supprimez les commandes suivantes de votre code :
query = "set character set utf8"; stat.execute(query);
Ces commandes ne sont pas obligatoires lorsque les paramètres de connexion sont correctement configurés.
Résultat attendu
Après avoir appliqué ces modifications et redémarré MySQL, les données doivent être stockées et récupérées correctement à l'aide de JDBC, en s'affichant au format UTF-8 attendu.
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!