Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi les chaînes UTF-8 sont-elles tronquées lors de l'utilisation de JDBC avec MySQL ?

Susan Sarandon
Libérer: 2024-11-01 16:24:02
original
351 Les gens l'ont consulté

Why are UTF-8 Strings Garbled When Using JDBC with 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%';
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

4. Supprimer les commandes inutiles

Supprimez les commandes suivantes de votre code :

query = "set character set utf8";
stat.execute(query);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!