So fügen Sie UTF-8-Zeichenfolgen ordnungsgemäß über JDBC in MySQL ein
Problemstellung:
Beim Einfügen von UTF-8-Zeichenfolgen in eine MySQL-Datenbank über die JDBC-Schnittstelle werden die Zeichen als beschädigte oder unlesbare Symbole angezeigt.
Erwartete Zeichenfolge: Апарати
Tatsächliches Ergebnis : ???????
Erste Fehlerbehebung:
<code class="java">Class.forName("com.mysql.jdbc.Driver").newInstance(); String dbPath = String.format( "jdbc:mysql://%s:%d/%s?user=%s&password=%s&characterEncoding=utf-8&" + "&useUnicode=true", ci.host, ci.port, ci.dbName, ci.user, ci.password); conn = java.sql.DriverManager.getConnection(dbPath);</code>
Zusätzliche Fehlerbehebung:
Diese Schritte wurden zusätzlich durchgeführt:
Folgende Zeilen aus dem Code entfernt:
<code class="java">query = "set character set utf8"; stat.execute(query);</code>
Lösung:
Es schien, dass die Ursache der Diskrepanz zwischen Java-Code und den MySQL-Tabellendaten auf Inkonsistenzen im Zeichensatz zurückzuführen war. Das Problem wurde behoben, als die Zeichensatzeinstellungen im Java-Code entfernt wurden.
Beim Vergleich des im Java-Code verwendeten MySQL-Befehls mit dem analogen Befehl aus der Eingabeaufforderung wurde ein subtiler Unterschied festgestellt:
<code class="java">String query = "insert into clt" + " (id, text) values (?, ?)";</code>
<code class="bash">mysql> insert into clt (id, text) values (12656697, "Апарати");</code>
Im Java-Code wurde das Zeichensatz-Suffix utf8 in der Anweisung „create table“ weggelassen. Diese Abweichung zwischen dem Java-Code und dem direkten MySQL-Befehl führt zu einer Diskrepanz bei der Zeichensatzverarbeitung.
Fazit:
Beim Einfügen von UTF-8-Strings in MySQL über die JDBC-Schnittstelle ist es wichtig, sicherzustellen, dass die Zeichensatzeinstellungen zwischen dem Java-Code und der Datenbankkonfiguration konsistent sind. Dadurch wird sichergestellt, dass Zeichenfolgen korrekt verarbeitet und in der Datenbank gespeichert werden.
Das obige ist der detaillierte Inhalt vonWarum werden meine UTF-8-Zeichenfolgen beim Einfügen in MySQL mithilfe von JDBC als beschädigte Zeichen angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!