


MySQL speichert Emoji-Ausdrücke (Spitzname des WeChat-Entwicklungsbenutzers.)
Feb 15, 2017 am 10:47 AM
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

Undress AI Tool
Ausziehbilder kostenlos

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

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

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

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)