Maison >base de données >tutoriel mysql >Comment corriger l'exception « Valeur de chaîne incorrecte » lors de l'insertion d'émojis dans MySQL ?

Comment corriger l'exception « Valeur de chaîne incorrecte » lors de l'insertion d'émojis dans MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 14:36:12921parcourir

How to Fix

Résolution de l'exception de valeur de chaîne incorrecte lors de l'insertion d'Emoji

Lorsque vous tentez d'insérer une chaîne contenant des caractères emoji dans une base de données MySQL à l'aide de JDBC, vous pouvez rencontrer l'exception suivante :

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...'

Cette erreur survient car le jeu de caractères utf8 par défaut de MySQL ne prend en charge que les caractères du plan multilingue de base. Pour résoudre ce problème, vous devez activer la prise en charge du jeu de caractères utf8mb4, qui étend utf8 pour couvrir le plan étendu où résident les caractères emoji.

Initialisation de la connexion

Définissez immédiatement l'encodage de la connexion sur utf8mb4. après avoir établi la connexion :

DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password").prepareStatement("SET NAMES 'utf8mb4'");

Modifications de la base de données et des tables

Mise à jour le jeu de caractères et le classement de votre base de données et des tables concernées en utf8mb4 :

ALTER DATABASE `database` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Code Java

Assurez-vous que votre code Java utilise le jeu de caractères utf8mb4 pour l'encodage des caractères de chaîne. Par exemple, avec Connector/J :

DriverManager.getConnection("jdbc:mysql://localhost:3306/database?characterEncoding=utf8mb4", "username", "password");
// ...
preparedStatement.setString(1, "walmart obama ?"); // Emoji characters should be supported now

En suivant ces étapes, vous pouvez activer la prise en charge de utf8mb4 et résoudre l'exception de valeur de chaîne incorrecte lors de l'insertion de caractères emoji dans votre base de données MySQL.

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