Lösung für die Fehlermeldung "java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'" beim Speichern von Emoticons in MySQL

Lösung für die Fehlermeldung "java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'" beim Speichern von Emoticons in MySQL

Vorwort

Dieser Artikel stellt hauptsächlich die Lösung für den MySQL-Speichertabellenfehler vor: java.sql.SQLException: Falscher Zeichenfolgenwert: '\xF0\x9F\x92\xA9\x0D\x0A...' und teilt sie zu Ihrer Information. Werfen wir einen Blick auf die ausführliche Einführung:

Dieses Projekt basiert auf Spring MVC + MySQL + Druid DataSource. Beim Einfügen von Emoji-Zeichen in die Datenbank erscheint eine Fehlermeldung:

java.sql.SQLException: Falscher String-Wert: '\xF0\x9F\x92\xA9\x0D\x0A...'

Gewöhnliche Zeichen benötigen bis zu 3 Bytes, was für die Verwendung von UTF-8 ausreicht. Emoji-Zeichen belegen 4 Bytes und müssen mit dem Zeichensatz utf8mb4 gespeichert werden. Die Lösung erfordert Änderungen an zwei Stellen: am MySQL-Server und am Verbindungsclient.

MySQL-Server

Ich habe zuvor ein Tutorial vorgestellt, wie man MySQL zum Speichern von Emoji-Zeichen einrichtet. Wenn Sie mehr erfahren möchten, können Sie sich dieses zunächst ansehen.

Ändern Sie auf der Serverseite die Felder, in denen Emoji-Zeichen gespeichert werden müssen, sodass der Zeichensatz utf8mb4 verwendet wird:

ALTER TABLE mytable MODIFY COLUMN myfiled varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Kunde

Der Client muss den Zeichensatz der Verbindung auf utf8mb4 einstellen.

Der Aufbau ist wie folgt:

Namen festlegen utf8mb4;

Es wird die Open-Source-Datenquelle Druid von Alibaba verwendet. Sie verfügt über eine Eigenschaft namens connectionInitSqls, mit der das SQL festgelegt wird, das ausgeführt wird, wenn die physische Verbindung initialisiert wird. Daher können wir connectionInitSqls verwenden, um die Verbindung zu initialisieren.

Die Feder ist wie folgt konfiguriert:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="schließen">
 <!-- Basisattribute URL, Benutzer, Passwort -->
 <Eigenschaftsname="URL" Wert="jdbc:mysql://localhost:3888/majing?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" />
 <Eigenschaftsname="Benutzername" Wert="dbusername"/>
 <Eigenschaftsname="Passwort" Wert="dbpasswod"/>
 <Eigenschaftsname="connectionInitSqls" Wert="Namen festlegen utf8mb4;" />
 <!-- Andere Konfigurationen -->
</bean>

Andere Datenbankverbindungspools wie dbcp2 und HikariCP haben das Attribut connectionInitSqls.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So gehen Sie mit dem Fehler beim Einfügen seltener Zeichen in MySQL um (falscher Zeichenfolgenwert)
  • MySQL löst bei der Ausnahmeanalyse einen falschen Zeichenfolgenwert aus
  • MySql-Fehler: Falscher Zeichenfolgenwert für Spalte
  • Lösung für falsche Zeichenfolgenwerte in MySQL

<<:  So starten/stoppen Sie den Tomcat-Server in Java

>>:  JS asynchroner Code Unit-Test Magie Promise

Artikel empfehlen

Organisieren Sie die allgemeinen Wissenspunkte von CocosCreator

Inhaltsverzeichnis 1. Szene laden 2. Knoten suche...

Leistung des Node+Express-Testservers

Inhaltsverzeichnis 1 Testumgebung 1.1 Server-Hard...

Der Quellcode zeigt, warum Vue2 Daten und Methoden direkt abrufen kann

Inhaltsverzeichnis 1. Beispiel: Hiermit können Da...

Upgrade des Windows Server 2008R2-Dateiservers auf Windows Server 2016

Die Benutzerorganisation verfügt über zwei Window...

JavaScript, um den Effekt des Tab-Leistenwechsels zu erzielen

Registerkartenleiste: Klicken Sie auf verschieden...

So verwenden Sie MySQL, um die Datengenerierung in Excel abzuschließen

Excel ist das am häufigsten verwendete Tool zur D...

Gängige Master-Slave-Replikationsarchitekturen in MySQL 4

Inhaltsverzeichnis Replikationsarchitektur mit ei...

Sechs Vererbungsmethoden in JS und ihre Vor- und Nachteile

Inhaltsverzeichnis Vorwort Vererbung von Prototyp...

So ändern Sie das Root-Passwort von MySQL in Docker

Der erste Schritt besteht darin, einen MySQL-Cont...

Detaillierte Schritte zum Ausführen eines Springboot-Projekts in Linux Docker

Einführung: Die Konfiguration von Docker, auf dem...

Was sind Inline-Elemente und Blockelemente?

1. Inline-Elemente nehmen nur die Breite des Inhal...