Rumah  >  Artikel  >  pangkalan data  >  Mengapa Rentetan UTF-8 Saya Dipaparkan Sebagai Aksara Rosak Apabila Memasukkan Ke MySQL Menggunakan JDBC?

Mengapa Rentetan UTF-8 Saya Dipaparkan Sebagai Aksara Rosak Apabila Memasukkan Ke MySQL Menggunakan JDBC?

Barbara Streisand
Barbara Streisandasal
2024-11-01 18:03:02145semak imbas

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

Cara Memasukkan Rentetan UTF-8 dengan betul ke dalam MySQL melalui JDBC

Pernyataan Masalah:

Apabila memasukkan rentetan UTF-8 ke dalam pangkalan data MySQL menggunakan antara muka JDBC, aksara dipaparkan sebagai simbol rosak atau tidak boleh dibaca.

Rentetan Jangkaan: Апарати
Hasil Sebenar : ???????

Penyelesaian Masalah Awal:

<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>

Penyelesaian Masalah Tambahan:

Langkah-langkah ini diambil sebagai tambahan:

  • Tambahan baris yang dicadangkan oleh Costis Aivalis ke /etc/mysql/my.cnf.
  • Mengalih keluar baris berikut daripada kod:

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

Penyelesaian:

Nampaknya punca percanggahan antara kod Java dan data jadual MySQL adalah disebabkan oleh ketidakkonsistenan set aksara. Isu ini telah diselesaikan apabila tetapan set aksara dalam kod Java telah dialih keluar.

Membandingkan arahan MySQL yang digunakan dalam kod Java dengan arahan yang serupa daripada arahan arahan, perbezaan yang ketara telah ditemui:

<code class="java">String query = "insert into clt" + " (id, text) values (?, ?)";</code>
Kesimpulan:
<code class="bash">mysql> insert into clt (id, text) values (12656697, "Апарати");</code>

Apabila memasukkan rentetan UTF-8 ke dalam MySQL menggunakan antara muka JDBC, adalah penting untuk memastikan tetapan set aksara adalah konsisten antara kod Java dan konfigurasi pangkalan data. Ini memastikan bahawa rentetan dikendalikan dan disimpan dengan betul dalam pangkalan data.

Atas ialah kandungan terperinci Mengapa Rentetan UTF-8 Saya Dipaparkan Sebagai Aksara Rosak Apabila Memasukkan Ke MySQL Menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn