Maison > Article > base de données > 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 ?
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!