So kodieren Sie UTF-8-Strings korrekt für MySQL mit JDBC
Einführung
Wann Bei der Arbeit mit MySQL über JDBC ist es wichtig zu verstehen, wie man UTF-8-Strings richtig kodiert, um die Datenintegrität sicherzustellen und Zeichenbeschädigungen zu vermeiden. Dieser Artikel befasst sich mit dem häufigen Problem einer falschen UTF-8-Codierung, die zu verstümmeltem Text in MySQL führt.
Problembeschreibung
Zeilen, die mithilfe von JDBC in eine MySQL-Tabelle eingefügt wurden, wurden angezeigt mit falschen Zeichen, mit der Anzeige „????????“ anstelle des vorgesehenen kyrillischen Textes. Dieses Problem blieb trotz der Einstellung „characterEncoding=utf-8“ in der Verbindungszeichenfolge und der Ausführung von SQL-Anweisungen zum Festlegen des Zeichensatzes bestehen.
MySQL-Konfiguration
Um das Problem zu beheben ist es wichtig, die MySQL-Konfigurationseinstellungen zu überprüfen. Führen Sie die folgenden Befehle aus, um die Einstellungen für Zeichenkodierung und Sortierung zu überprüfen:
show variables like 'character%'; show variables like 'collation%';
JDBC-Verbindungskonfiguration
Stellen Sie sicher, dass die JDBC-Verbindungszeichenfolge die richtige Zeichenkodierung und Unicode enthält Einstellungen:
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8","user","passwd");
SQL-Anweisungen für die Zeichensatzverwaltung
Es ist im Allgemeinen nicht erforderlich, SQL-Anweisungen auszuführen, um den Zeichensatz und die Kodierung explizit festzulegen. Standardmäßig verwendet MySQL die über my.cnf oder my.ini konfigurierten Einstellungen. In einigen Fällen müssen Sie jedoch möglicherweise die folgenden Anweisungen ausführen:
<code class="sql">SET NAMES 'utf8'; SET CHARACTER SET 'utf8';</code>
Datenbanktabellendefinition
Stellen Sie sicher, dass die Datenbanktabelle mit dem richtigen Zeichen definiert ist Satz und Kodierung:
<code class="sql">CREATE TABLE clt ( id bigint NOT NULL, text varchar(50) NOT NULL ) DEFAULT CHARACTER SET utf8;</code>
Entfernen unnötiger SQL-Anweisungen
Der bereitgestellte Beispielcode führt unnötigerweise SQL-Anweisungen aus, um den Zeichensatz festzulegen. Durch Entfernen der folgenden Anweisungen wird das Problem behoben:
<code class="sql">query = "set character set utf8"; stat.execute(query);</code>
Datenbankseitige Konfiguration
Überprüfen Sie als letzten Schritt, ob die datenbankseitige Konfiguration mit JDBC und Code übereinstimmt Einstellungen. Dazu gehört das Ändern von my.cnf oder my.ini, um die entsprechenden Zeichensatzserver- und Zeichensatzdateisystemparameter festzulegen.
Durch Befolgen dieser Richtlinien können Sie eine genaue UTF-8-Zeichenfolgenverarbeitung in Ihrem MySQL sicherstellen Datenbank über JDBC, um verstümmelten Text zu verhindern und die Datenintegrität aufrechtzuerhalten.
Das obige ist der detaillierte Inhalt vonWarum werden meine kyrillischen Zeichenfolgen in meiner MySQL-Datenbank als „????????' angezeigt, obwohl ich in meiner JDBC-Verbindung „characterEncoding=utf-8' eingestellt habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!