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:
|
<<: Grafisches Tutorial zur Installation und Konfiguration von VMware Tools für Ubuntu 16.04 64-Bit
>>: Detaillierte Erläuterung des React setState-Datenaktualisierungsmechanismus
1. Problembeschreibung: MysqlERROR1698 (28000)-Lö...
Inhaltsverzeichnis vite Bauen Konfiguration vite....
Wenn die Auflösung der Anmeldeoberfläche besonder...
Heute habe ich bei der Verwendung von SVG in der ...
Ich glaube, dass jeder manchmal Daten kopieren un...
Kürzlich stieß ich im Verlauf des Projekts auf ei...
Mysql Join-Abfrage 1. Grundlegende Konzepte Verbi...
Szenario 1: HTML: <div Klasse="äußere&quo...
Inhaltsverzeichnis 1. Wie wird die aktuelle Uhrze...
Inhaltsverzeichnis Vorwort Ursache Phänomen warum...
[LeetCode] 182.Doppelte E-Mails Schreiben Sie ein...
Wie finde ich langsame SQL-Anweisungen in MySQL? ...
Vorwort Die Datenbank-Deadlocks, die ich zuvor er...
Da das Distributionspaket von MySQL Community Ser...
Das Folgende ist mein Urteil basierend auf der Da...