Maison  >  Article  >  base de données  >  Pourquoi mes chaînes cyrilliques apparaissent-elles sous la forme \"???????\" dans ma base de données MySQL malgré la définition de `characterEncoding=utf-8` dans ma connexion JDBC ?

Pourquoi mes chaînes cyrilliques apparaissent-elles sous la forme \"???????\" dans ma base de données MySQL malgré la définition de `characterEncoding=utf-8` dans ma connexion JDBC ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 22:38:02970parcourir

Why are my Cyrillic strings appearing as

Comment encoder correctement les chaînes UTF-8 pour MySQL à l'aide de JDBC

Introduction

Quand En travaillant avec MySQL via JDBC, il est essentiel de comprendre comment encoder correctement les chaînes UTF-8 pour garantir l'intégrité des données et éviter la corruption des caractères. Cet article aborde le problème courant d'un encodage UTF-8 incorrect, entraînant un texte tronqué dans MySQL.

Énoncé du problème

Les lignes insérées dans une table MySQL à l'aide de JDBC étaient affichées avec des caractères incorrects, affichant "????????" au lieu du texte cyrillique prévu. Ce problème a persisté malgré la définition de "characterEncoding=utf-8" dans la chaîne de connexion et l'exécution d'instructions SQL pour définir le jeu de caractères.

Configuration MySQL

Pour résoudre le problème , il est crucial de vérifier les paramètres de configuration MySQL. Exécutez les commandes suivantes pour vérifier les paramètres d'encodage et de classement des caractères :

show variables like 'character%';
show variables like 'collation%';

Configuration de la connexion JDBC

Assurez-vous que la chaîne de connexion JDBC inclut l'encodage de caractères et l'Unicode corrects. paramètres :

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8","user","passwd");

Instructions SQL pour la gestion des jeux de caractères

Il n'est généralement pas nécessaire d'exécuter des instructions SQL pour définir explicitement le jeu de caractères et l'encodage. Par défaut, MySQL utilise les paramètres configurés via my.cnf ou my.ini. Cependant, dans certains cas, vous devrez peut-être exécuter les instructions suivantes :

<code class="sql">SET NAMES 'utf8';
SET CHARACTER SET 'utf8';</code>

Définition de la table de base de données

Assurez-vous que la table de base de données est définie avec le caractère correct set et encodage :

<code class="sql">CREATE TABLE clt (
  id bigint NOT NULL,
  text varchar(50) NOT NULL
) DEFAULT CHARACTER SET utf8;</code>

Suppression des instructions SQL inutiles

L'exemple de code fourni exécute inutilement des instructions SQL pour définir le jeu de caractères. La suppression des instructions suivantes résout le problème :

<code class="sql">query = "set character set utf8";
stat.execute(query);</code>

Configuration côté base de données

En dernière étape, vérifiez que la configuration côté base de données correspond au JDBC et au code paramètres. Cela inclut la modification de my.cnf ou my.ini pour définir les paramètres de serveur de jeu de caractères et de système de fichiers de jeu de caractères appropriés.

En suivant ces directives, vous pouvez garantir une gestion précise des chaînes UTF-8 dans votre MySQL. base de données via JDBC, empêchant le texte tronqué et préservant l'intégrité des 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