Maison > base de données > tutoriel mysql > Comment résoudre les problèmes d'encodage UTF-8 dans MySQL et Java JDBC Connector 5.1 ?

Comment résoudre les problèmes d'encodage UTF-8 dans MySQL et Java JDBC Connector 5.1 ?

Susan Sarandon
Libérer: 2024-10-29 08:34:02
original
620 Les gens l'ont consulté

How to Solve UTF-8 Encoding Issues in MySQL and Java JDBC Connector 5.1?

Dépannage des problèmes d'encodage UTF-8 avec MySQL et Java JDBC Connector 5.1

Dans un scénario impliquant la synchronisation entre deux bases de données MySQL UTF-8 à l'aide IBATIS ou JDBC, les développeurs Java peuvent rencontrer des problèmes lors de la gestion des données UTF-8. Voici une analyse approfondie du problème et de sa solution.

Symptômes :

  • Lors de la lecture des données de la première base de données, le code Java rencontre des problèmes non standard caractères comme 'ó' au lieu de 'ó'.
  • Les données écrites dans la deuxième base de données restent inchangées.
  • Affichage des données chargées dans une application Web (malgré la définition du Content-Type en HTML comme "text/html; charset=utf-8") affiche toujours les caractères non standard.
  • Pendant le décodage des données à l'aide de "new String(data.getBytes("UTF-8"))" produit le caractère correct (« ó »), l'application de cette solution globalement n'est pas viable.

Cause :

  • Paramètres d'encodage de caractères incompatibles entre la base de données, Application Java et application Web.

Paramètres de la base de données :

  • character_set_server : latin1
  • character_set_connection : utf8
  • character_set_results : utf8

Le problème réside principalement dans le fait que le paramètre "character_set_server" est "latin1".

Solution :

Pour lire et écrire correctement les données UTF-8 à l'aide du connecteur JDBC, ces paramètres doivent être explicitement définis lors de l'initialisation de la connexion :

<code class="java">DriverManager.getConnection(
           "jdbc:mysql://" + host + "/" + dbName 
           + "?useUnicode=true&amp;characterEncoding=UTF-8", user, pass);</code>
Copier après la connexion

Cela garantit que la connexion utilise le codage UTF-8 partout, y compris le codage des caractères, les jeux de résultats, les messages d'exception et toutes les chaînes internes créées par le pilote.

Remarque :

  • Le problème affecte principalement la récupération de données de la première base de données et l'écriture dans la seconde. base de données.
  • En respectant ces paramètres, le code Java et l'application Web géreront avec précision les données UTF-8, ce qui entraînera un affichage correct des caractères.

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