Maison >base de données >tutoriel mysql >Pourquoi mon application Java affiche-t-elle des caractères UTF-8 déformés lors de l'interaction avec une base de données MySQL ?

Pourquoi mon application Java affiche-t-elle des caractères UTF-8 déformés lors de l'interaction avec une base de données MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 10:47:02608parcourir

Why is my Java application displaying distorted UTF-8 characters when interacting with a MySQL database?

Dépannage des problèmes d'encodage UTF-8 dans les interactions JDBC MySQL

Dans un scénario d'intégration Java-MySQL utilisant le connecteur JDBC 5.1, des problèmes d'encodage particuliers surviennent lors de la lecture et de l'écriture de données UTF-8. Les caractères apparaissent déformés ou tronqués, provoquant des visualisations inattendues dans les interactions avec la base de données et dans les applications Web.

Pour résoudre cette énigme, inspectez les paramètres de la base de données :

character_set_client-->utf8
character_set_connection-->utf8
character_set_database-->utf8
...
character_set_server-->latin1
...

Le problème provient de jeux de caractères incompatibles. Le serveur de base de données utilise « latin1 », qui ne prend pas en charge UTF-8 de manière native. Pour remédier à ce problème, définissez explicitement les paramètres 'useUnicode' et 'characterEncoding' dans la chaîne de connexion JDBC :

DriverManager.getConnection(
           "jdbc:mysql://" + host + "/" + dbName 
           + "?useUnicode=true&characterEncoding=UTF-8", user, pass);

Cela garantit que les opérations de lecture et d'écriture utilisent UTF-8 de manière cohérente.

Le le problème n’est peut-être pas uniquement lié aux configurations de base de données. Les applications Java peuvent également gérer UTF-8 de manière incorrecte. Si le problème d'encodage persiste après avoir ajusté les paramètres de la base de données, envisagez de décoder les données de la base de données en utilisant :

new String(data.getBytes("UTF-8"));

Cela convertit les données en chaîne UTF-8, permettant une visualisation correcte dans les applications Java. Cependant, évitez cette solution générale, car cela pourrait interférer avec les écritures dans la base de données.

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!

Déclaration:
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