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

Barbara Streisand
Lepaskan: 2024-11-01 18:03:02
asal
144 orang telah melayarinya

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>
Salin selepas log masuk

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>
    Salin selepas log masuk

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>
Salin selepas log masuk
Kesimpulan:
<code class="bash">mysql> insert into clt (id, text) values (12656697, "Апарати");</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!