Heim  >  Artikel  >  Datenbank  >  Warum sind UTF-8-Zeichenfolgen bei der Verwendung von JDBC mit MySQL verstümmelt?

Warum sind UTF-8-Zeichenfolgen bei der Verwendung von JDBC mit MySQL verstümmelt?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 16:24:02352Durchsuche

Why are UTF-8 Strings Garbled When Using JDBC with MySQL?

Fehler bei der Verarbeitung von MySQL-UTF-8-Zeichenfolgen in JDBC

Die fehlerhafte Verarbeitung von UTF-8-Zeichenfolgen in MySQL über die JDBC-Schnittstelle kann zu Datenverlust führen Korruption oder Anzeigeprobleme. In diesem Artikel wird ein Szenario untersucht, in dem über JDBC eingefügte Daten verstümmelt in der Datenbank angezeigt werden.

Der bereitgestellte Codeausschnitt zeigt ein Java-Programm, das eine Verbindung zu einer MySQL-Datenbank herstellt und UTF-8-Text in eine Tabelle einfügt. Bei der Überprüfung der eingegebenen Daten wird der Text jedoch falsch angezeigt, wobei die erwarteten Zeichen durch Fragezeichen ersetzt werden.

Das Problem liegt in den Zeichenkodierungseinstellungen in MySQL. Standardmäßig verwendet MySQL den Zeichensatz und die Sortierfolge latin1, die mit UTF-8 nicht kompatibel sind. Um dieses Problem zu beheben, sind die folgenden Schritte entscheidend:

1. Überprüfen Sie die Zeichenkodierungseinstellungen

Führen Sie die folgenden SQL-Befehle aus, um die aktuellen Zeichenkodierungseinstellungen anzuzeigen:

show variables like 'character%';
show variables like 'collation%';

Die Ausgabe sollte anzeigen, dass die Zeichenkodierung für beide auf utf8 eingestellt ist Server und die Datenbank.

2. Konfigurieren Sie MySQL für UTF-8

Wenn die Kodierung nicht korrekt ist, ändern Sie sie, indem Sie die MySQL-Konfigurationsdatei (my.cnf) aktualisieren, indem Sie die folgenden Zeilen hinzufügen:

[mysqld]
character-set-server = utf8
character-set-filesystem = utf8

Alternativ können Sie MySQL Workbench verwenden, um diese Einstellungen visuell zu ändern.

3. Stellen Sie eine Verbindung mit den richtigen URL-Parametern her

Beziehen Sie beim Herstellen der Java-Verbindung die folgenden Parameter in die JDBC-URL ein:

jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8

4. Entfernen Sie unnötige Befehle

Entfernen Sie die folgenden Befehle aus Ihrem Code:

query = "set character set utf8";
stat.execute(query);

Diese Befehle sind nicht erforderlich, wenn die Verbindungsparameter korrekt konfiguriert sind.

Erwartetes Ergebnis

Nachdem Sie diese Änderungen übernommen und MySQL neu gestartet haben, sollten die Daten korrekt mit JDBC gespeichert und abgerufen werden und im erwarteten UTF-8-Format angezeigt werden.

Das obige ist der detaillierte Inhalt vonWarum sind UTF-8-Zeichenfolgen bei der Verwendung von JDBC mit MySQL verstümmelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn