Maison >base de données >tutoriel mysql >Comment corriger l'erreur MySQL « Valeur de chaîne incorrecte » lors de l'insertion de données UTF-8 via JDBC ?

Comment corriger l'erreur MySQL « Valeur de chaîne incorrecte » lors de l'insertion de données UTF-8 via JDBC ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 21:01:16861parcourir

How to Fix the MySQL

Dépannage de l'erreur « Valeur de chaîne incorrecte » lors de l'insertion d'UTF-8 dans MySQL via JDBC

L'erreur « Valeur de chaîne incorrecte » peut se produire lorsque tenter d'insérer des données UTF-8 dans une base de données MySQL à l'aide de JDBC. Cette erreur indique généralement que l'encodage des caractères n'est pas correctement configuré.

Explication du problème

Dans votre cas, vous avez configuré votre connexion JDBC avec les paramètres suivants :

Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true&characterEncoding=utf-8", userName, password);

Cette configuration spécifie que les caractères Unicode doivent être utilisés et que le codage des caractères doit être UTF-8. Cependant, le message d'erreur suggère que la valeur de chaîne incorrecte commence par "xF0", qui est un caractère UTF-8 de 4 octets.

Solution

Par défaut, Le codage utf8 de MySQL autorise uniquement les caractères pouvant être représentés avec 3 octets en UTF-8. Pour résoudre ce problème, vous devez spécifier le codage utf8mb4 pour votre base de données MySQL. Cet encodage prend en charge les caractères qui occupent 4 octets en UTF-8.

Étapes à résoudre :

  1. Modifiez l'encodage de la colonne problématique en utf8mb4 à l'aide du requête suivante :
ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR(255) CHARACTER SET utf8mb4;
  1. Si vous utilisez MySQL 5.5 ou version ultérieure, définissez la propriété du serveur Character_set_server sur utf8mb4 dans le fichier de configuration MySQL.
  2. Assurez-vous que Connector/J détecte automatiquement le paramètre UTF-8 en laissant CharacterEncoding en dehors de la chaîne de connexion.

Informations supplémentaires :

  • Pour plus d'informations sur le caractère Unicode sets dans MySQL, reportez-vous à la documentation officielle de MySQL : [https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html](https://dev.mysql.com/doc /refman/8.0/en/charset-unicode-sets.html)
  • Connector/J fournit également des instructions détaillées sur la configuration de la prise en charge d'UTF-8 : [https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-charset.html](https://dev.mysql.com/doc/connector-j/8.0/ fr/connecteur-j-reference-charset.html)

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