suchen
HeimWeChat-AppletWeChat-EntwicklungMySQL 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

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heißer Artikel

Nordhold: Fusionssystem, erklärt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Sicherer Prüfungsbrowser

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

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

DVWA

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