Detaillierte Erläuterung der Lösung für verstümmelte Zeichen, wenn JDBC eine Verbindung zu MySQL herstellt, um Chinesisch zu verarbeiten

Detaillierte Erläuterung der Lösung für verstümmelte Zeichen, wenn JDBC eine Verbindung zu MySQL herstellt, um Chinesisch zu verarbeiten

Detaillierte Erläuterung der Lösung für verstümmelte Zeichen, wenn JDBC eine Verbindung zu MySQL herstellt, um Chinesisch zu verarbeiten

Vor Kurzem musste das integrierte Projekt eine Verbindung zu einer älteren Version des MySQL-Servers herstellen. Bei der Überprüfung mit Navicat wurde festgestellt, dass dieser MySQL-Server anscheinend keine Standardcodierung hat. Einige PHP-Dateien, die dieses MySQL betreiben, sollten die Codierung gb2312 verwenden. Bei der direkten Verwendung von JDBC-Operationen werden jedoch alle chinesischen Zeichen, die aus der Datenbank gelesen werden, verstümmelt.

Zuerst habe ich versucht, die Kodierungskonvertierung mit Methoden wie entity.setDepartName(new String(rs.getString("hg").getBytes("gbk"), "utf-8")); zu erzwingen. Dies schlug jedoch fehl, da die konvertierten Zeichen unabhängig von der verwendeten Methode immer verstümmelt waren und die Art der Verstümmelung jedes Mal anders war. Ziemlich deprimiert. Da in diesem Projekt außerdem andere Produkte verwendet werden, ist es nicht möglich, zusätzliche Dinge wie Filter hinzuzufügen. Dieses Problem lässt sich daher nicht so einfach lösen.

Es gab kein Problem mit der Verbindung und Abfrage über Navicat, also habe ich versucht, eine Tabelle nach SQL zu exportieren, um zu sehen, ob es im DDL eine Kodierungseinstellung gab. Das Ergebnis hat mich enttäuscht, weil die Kodierung überhaupt nicht geschrieben wurde. Also änderte ich die Erweiterung der exportierten SQL-Datei in HTML, öffnete sie mit IE und stellte fest, dass kein verstümmelter Code vorhanden war. Ich überprüfte das Kodierungsformat und stellte fest, dass es „gb2312“ war. Die Verwendung von Java zum Erzwingen der Transkodierung war jedoch erfolglos. Was sollte ich tun?

Darüber hinaus läuft dieses Projekt bereits seit vielen Jahren und es mangelt an Nachwartung. Die Datei my.ini kann nicht angezeigt und geändert werden.

Plötzlich fiel mir ein, dass ich bei der Verbindung mit MySQL Parameter hinzufügen kann und einige Parameter die Kodierung angeben. Kann das das Problem lösen?

Ändern Sie daher die Verbindungszeichenfolge (der ursprüngliche Wert lautet: url="jdbc:mysql://192.168.18.254:3306/web_oa) wie folgt:

url="jdbc:mysql://192.168.18.254:3306/web_oa?useUnicode=true&characterEncoding=gbk"

Starten Sie die Anwendung neu und überprüfen Sie, OK! Chinesisch ist normal.

Problem gelöst.

Diese Methode gibt beim Verbinden tatsächlich das GBK-Kodierungsformat an, wodurch vermieden wird, dass Client und Server bei der Interaktion ihre eigenen Standardkodierungsformate verwenden. Solange die Konfiguration angemessen ist, gibt es kein Problem mit verstümmeltem Code.

Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht oder kommen Sie zur Diskussion in die Community. Vielen Dank fürs Lesen und ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • Beispiellösung zum Schreiben verstümmelter chinesischer Zeichen in MySQL in PHP
  • Verstümmelte Zeichen und Lösungen im MySQL-Zeichensatz
  • Lösung für das Problem mit verstümmeltem MySQL-Code unter Linux
  • So lösen Sie das Problem verstümmelter chinesischer Zeichen beim Einfügen von Tabellendaten in MySQL
  • Zusammenfassung der Behandlung des Problems der Ausnahme mit verstümmeltem Code bei der JDBC-Verbindung MySQL
  • Detaillierte Erklärung des Problems mit verstümmelten chinesischen Schriftzeichen in der MySQL-Datenbank
  • Lösen Sie das Problem verstümmelter Daten bei der MySQL-Datenbankmigration

<<:  Grafisches Tutorial zur Installation und Konfiguration von VMware Tools für Ubuntu 16.04 64-Bit

>>:  Detaillierte Erläuterung des React setState-Datenaktualisierungsmechanismus

Artikel empfehlen

Lösung für MySql-Fehler 1698 (28000)

1. Problembeschreibung: MysqlERROR1698 (28000)-Lö...

Lösung für den Absturz der Grafikkarte auf Linux-Servern

Wenn die Auflösung der Anmeldeoberfläche besonder...

Detaillierte grafische Erklärung zur Verwendung von SVG im Vue3+Vite-Projekt

Heute habe ich bei der Verwendung von SVG in der ...

Detaillierte Erklärung zur Verwendung der Linux-Umleitung

Ich glaube, dass jeder manchmal Daten kopieren un...

Detaillierte Erklärung wichtiger Kaskadierungskonzepte in CSS

Kürzlich stieß ich im Verlauf des Projekts auf ei...

Wissenspunkte zum Prinzip der MySQL-Join-Abfrage

Mysql Join-Abfrage 1. Grundlegende Konzepte Verbi...

Div adaptive Höhe füllt automatisch die verbleibende Höhe

Szenario 1: HTML: <div Klasse="äußere&quo...

Zusammenfassung der Verwendung von Datetime und Timestamp in MySQL

Inhaltsverzeichnis 1. Wie wird die aktuelle Uhrze...

MySQL sollte niemals Update-Anweisungen wie diese schreiben

Inhaltsverzeichnis Vorwort Ursache Phänomen warum...

SQL-Implementierung von LeetCode (182. Doppelte Postfächer)

[LeetCode] 182.Doppelte E-Mails Schreiben Sie ein...

So finden Sie langsame SQL-Anweisungen in MySQL

Wie finde ich langsame SQL-Anweisungen in MySQL? ...

Eine vollständige Aufzeichnung eines Mysql-Deadlock-Fehlerbehebungsprozesses

Vorwort Die Datenbank-Deadlocks, die ich zuvor er...

Optimierte Implementierung von count() für große MySQL-Tabellen

Das Folgende ist mein Urteil basierend auf der Da...