Maison > base de données > tutoriel mysql > Comment corriger les erreurs « Valeur de chaîne incorrecte » lors de l'insertion de texte Unicode dans MySQL à l'aide de JDBC ?

Comment corriger les erreurs « Valeur de chaîne incorrecte » lors de l'insertion de texte Unicode dans MySQL à l'aide de JDBC ?

DDD
Libérer: 2024-12-22 08:46:09
original
833 Les gens l'ont consulté

How to Fix

Erreur de valeur de chaîne incorrecte avec l'insertion UTF-8 dans MySQL via JDBC

Lors de la tentative d'insertion de texte Unicode dans une base de données MySQL à l'aide de JDBC, les utilisateurs peuvent rencontrer une erreur « Valeur de chaîne incorrecte », en particulier lorsque le texte contient la séquence d'octets xF0. Ce problème se manifeste souvent avec des ensembles de données volumineux et peut être attribué aux limitations d'encodage par défaut de MySQL.

Cause de l'erreur :

L'encodage utf8 de MySQL ne prend en charge que les caractères Unicode représentables dans trois octets. Cependant, certains caractères Unicode, tels que xF0x90x8Dx83, nécessitent quatre octets en UTF-8. Tenter d'insérer de tels caractères dans une colonne codée en utf8 déclenche l'erreur.

Solution :

Pour résoudre le problème, deux approches peuvent être adoptées :

  1. Changer de colonne Encodage :

    Mettez à jour l'encodage de la colonne vers utf8mb4, qui prend en charge les caractères Unicode de quatre octets. Cela peut être fait à l'aide de l'instruction SQL suivante :

    ALTER TABLE <table_name> MODIFY COLUMN <column_name> TEXT COLLATE utf8mb4;
    Copier après la connexion
  2. Configurer les propriétés du serveur :

    Si vous utilisez MySQL version 5.5 ou ultérieure, définissez la propriété Character_set_server dans le fichier de configuration MySQL sur utf8mb4 pour permettre au serveur de gérer l'Unicode à quatre octets caractères.

    character_set_server = utf8mb4
    Copier après la connexion

Configuration du connecteur/J :

Le connecteur/J détecte automatiquement le paramètre UTF-8 lorsque le paramètre CharacterEncoding est omis de la chaîne de connexion. Par conséquent, pour les jeux de caractères UTF-8 à quatre octets, laissez CharacterEncoding de côté et définissez Character_set_server comme décrit ci-dessus.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal