Maison > base de données > tutoriel mysql > 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
Libérer: 2024-11-01 22:38:02
original
1065 Les gens l'ont consulté

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

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

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

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

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

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!

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