


MySQL speichert Emoji-Ausdrücke (Spitzname des WeChat-Entwicklungsbenutzers.)
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for colum n 'name' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)
Wenn der obige Fehler gemeldet wird, kann es sich um den Feldtyp im Java-Code und das Feld handeln Geben Sie in der Datenbank ein. Oder die Kodierung stimmt nicht überein. In diesem Fall vereinheitlichen Sie einfach das Format oder die Kodierung.
Hier stellen wir hauptsächlich den Fehler beim Einfügen von Emoji-Bildern in die Datenbank und die Lösungen vor
Bei Verwendung einer MySQL-Datenbank, wenn der Zeichensatz UTF-8 ist und in Java Auf dem Server wird beim Speichern von Emoji-Ausdrücken die obige Ausnahme ausgelöst (wenn sich beispielsweise WeChat entwickelt, um Benutzer-Spitznamen zu erhalten, verwenden die Spitznamen einiger Benutzer Emoji-Bilder)
Dies ist eine Ausnahme aufgrund von Der Zeichensatz wird nicht unterstützt, da die UTF-8-Kodierung zwei, drei oder vier Bytes umfassen kann, wobei Emoji-Ausdrücke vier Bytes umfassen können und die UTF-8-Kodierung von MySQL bis zu drei Bytes umfassen kann, sodass die Daten nicht eingefügt werden können .
Lösung:
1. Lösen Sie das Problem auf Datenbankebene (MySQL unterstützt utf8mb4 Version 5.5.3+, die auf eine neuere Version aktualisiert werden muss)
Hinweis:
(1. Datenbank, Tabelle ändern , Spaltenzeichensatz
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
(2. Ändern Sie die MySQL-Konfigurationsdatei my.cnf (Fenster ist my.ini)
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
(3. Wenn Sie einen Java-Server verwenden, aktualisieren Sie oder stellen Sie sicher, dass die MySQL-Verbindungsversion höher als 5.1.13 ist, andernfalls können Sie immer noch nicht Versuchen Sie es mit utf8mb4
(4. Serverseitige Datenbankkonfigurationsdatei
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE jdbc.username=root jdbc.password=password
Wenn MySQL-Connector aktualisiert wird , CharacterEncoding=utf8 kann automatisch ersetzt werden. Identifiziert als utf8mb4 (kompatibel mit dem ursprünglichen utf8) und
autoReconnection (wird die Verbindung automatisch wiederhergestellt, wenn sie ungewöhnlich unterbrochen wird? Der Standardwert ist falsch). Es wird dringend empfohlen, dieses Attribut zu ignorieren kann zu Caching führen.
Keine Die neueste Konfiguration der Datenbank wurde gelesen, was dazu führt, dass der utf8mb4-Zeichensatz nicht ausprobiert werden kann
2. Lösen Sie das Problem von der Anwendungsebene aus
Nachdem Sie die Daten erhalten haben, führen Sie dies aus, bevor Sie mit der Dateninventur fortfahren. Kodierung:
URLEncoder.encode(nickName, "utf-8");
Dekodiert, wenn aus der Datenbank abgerufen für Anzeige,
URLDecoder.decode(nickname, "utf-8");
Bei der Lösung des Problems aus der Anwendungsschicht wird empfohlen, es nicht direkt in den Objekt-Getter- und Setter-Methoden zu codieren, da die Die Setter-Methode kodiert den Spitznamen, wenn das Objekt eingefügt wird, was beim Einfügen in die Datenbank ziemlich kompliziert ist. Durch Aufrufen der Getter-Methode aus dem Objekt, um Ihre Referenz zu entnehmen, wird der vom Setter kodierte Spitzname neu dekodiert, was bedeutet, dass Es wird keine Operation für den Spitznamen ausgeführt.
Weitere MySQL-Emojis (Spitzname des WeChat-Entwicklungsbenutzers) finden Sie auf der chinesischen PHP-Website

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software
