Verursacht durch: java.sql.SQLException: Falscher Zeichenfolgenwert: „\xF0\x9F\x94\xA5“ für Spalte. Beim Speichern von Emoji-Ausdrücken in MySQL tritt ein Fehler auf. iOS-Emoticons (Emoji-Emoticons): Obwohl dieses Emoticon UTF-8-codiert ist, belegt ein Zeichen 4 Bytes, während die MySQL-UTF8-Codierung nur 3-Byte-Zeichen speichern kann. In MySQL 5.6 können Sie die Kodierung auf utf8mb4 einstellen, eine Obermenge von utf8. 1. Ändern Sie den MySQL-Zeichensatz Mysql setzt den Zeichenkodierungssatz auf utf8mb4, und die entsprechende Datenbank, Tabelle und das entsprechende Feld werden auf utf8mb4 gesetzt. Beachten Sie, dass, wenn der utf8-Kodierungssatz einer vorhandenen Tabelle auf utf8mb4 geändert wird, die Datenbank, Tabelle und das Feld einmal gesetzt und überprüft werden müssen. Wenn nur die Datenbank geändert wird, ändern sich die entsprechende Tabelle und das entsprechende Feld nicht, und dasselbe gilt für das Ändern der Tabelle. Wenn Sie die Konfiguration geändert haben, müssen Sie möglicherweise auch die Datenbank neu starten. Zeichensatzserver = utf8mb4 2. JDBC aktualisieren Niedrigere Versionen von JDBC zeigen verstümmelte Zeichen, verstümmelte Ausdrücke und sogar verstümmelte chinesische Schriftzeichen an. Nachfolgend sind einige entsprechende Situationen der JDBC-Versionen aufgeführt. Die Einzelheiten sind wie folgt: Die JDBC-Version unterstützt EMOJI. Das Bild wurde im Internet gefunden. Mein 5.1.6-Test fügt chinesische und Emoji-Ausdrücke normal ein und zeigt sie an. 3. Übernehmen Sie die Serverkonfiguration jdbc:mysql://xxx.xxx.xxx.xxx:3306/dbwww58com_chrcsm?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true. Die Parameter nach der Verbindungsadresse sind auf UTF-8 eingestellt oder können automatisch erkannt werden. Wenn nicht, versuchen Sie, den fettgedruckten Teil zu entfernen, damit die Verbindung die Serverkonfiguration automatisch erkennt. Die konkrete Situation hängt von der JDBC-Version ab. Übernehmen Sie die Serverkonfiguration jdbc:mysql://xxx.xxx.xxx.xxx:3306/dbwww58com_chrcsm?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true. Die Parameter nach der Verbindungsadresse sind auf UTF-8 eingestellt oder können automatisch erkannt werden. Wenn nicht, versuchen Sie, den fettgedruckten Teil zu entfernen, damit die Verbindung die Serverkonfiguration automatisch erkennt. Die konkrete Situation hängt von der JDBC-Version ab. 4. Legen Sie den init_connect-Parameter von MySQL fest Nach der Festlegung können Sie dies überprüfen, indem Sie Variablen wie „init_connect“ anzeigen, wie in Abbildung 2 der init_connect-Parameterabfrage dargestellt: 5. Der Kodierungssatz ist im Code festgelegt. Vielleicht liegt es an der JDBC-Version. Ich verwende diese Methode und sowohl das Einfügen als auch die Abfrage können normal fortgesetzt werden. connection.prepareStatement("set names utf8mb4").executeQuery();Dann fügen Sie es über connection.prepareStatement ein. Der Kodierungssatz ist im Code festgelegt, möglicherweise aufgrund der JDBC-Version. Ich verwende diese Methode, und sowohl das Einfügen als auch die Abfrage können normal fortgesetzt werden. connection.prepareStatement("set names utf8mb4").executeQuery();Dann fügen Sie es über connection.prepareStatement ein. Das könnte Sie auch interessieren:
|
<<: 20 JavaScript-Tipps zur Verbesserung der Entwicklungseffizienz
1. Das ul-Tag hat in Mozilla standardmäßig einen ...
Hinweis: Dieser Artikel wurde von jemand anderem ü...
Das WeChat-Applet verwendet die Scroll-Ansicht, u...
Inhaltsverzeichnis Vorwort 1. Ursache des Problem...
Kürzlich stieß ich im Verlauf des Projekts auf ei...
Inhaltsverzeichnis Standards für flüssige Animati...
Inhaltsverzeichnis Einführung Verwendung von Vers...
Sie können häufig Artikel über das Zeichnen mit C...
<html> <Kopf> <meta http-equiv=&quo...
Das mit JavaScript-Objekten und -Methoden impleme...
Bildschirmeinführung Screen ist eine vom GNU-Proj...
Heute habe ich eine Festplattenalarm-Ausnahme erh...
Die Betriebsumgebung dieses Tutorials: Windows 7-...
Die Auswirkung der Vervollständigung einer Menüle...
Einführung in kubectl kubectl ist ein Befehlszeil...