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.
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'");
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;
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!