Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum werden meine UTF-8-Zeichenfolgen beim Einfügen in MySQL mithilfe von JDBC als beschädigte Zeichen angezeigt?

Barbara Streisand
Freigeben: 2024-11-01 18:03:02
Original
144 Leute haben es durchsucht

Why Are My UTF-8 Strings Displaying As Corrupted Characters When Inserting Into MySQL Using JDBC?

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&amp;password=%s&amp;characterEncoding=utf-8&amp;&quot; + 
    "&amp;useUnicode=true", ci.host, ci.port, ci.dbName, ci.user, ci.password);
conn = java.sql.DriverManager.getConnection(dbPath);</code>
Nach dem Login kopieren

Zusätzliche Fehlerbehebung:

Diese Schritte wurden zusätzlich durchgeführt:

  • Von Costis Aivalis vorgeschlagene Zeilen zu /etc/mysql/my.cnf hinzugefügt.
  • Folgende Zeilen aus dem Code entfernt:

    <code class="java">query = "set character set utf8";
    stat.execute(query);</code>
    Nach dem Login kopieren

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>
Nach dem Login kopieren
<code class="bash">mysql> insert into clt (id, text) values (12656697, "Апарати");</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!