Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Isu Pengekodan UTF-8 dalam MySQL dan Java JDBC Connector 5.1?

Bagaimana untuk Menyelesaikan Isu Pengekodan UTF-8 dalam MySQL dan Java JDBC Connector 5.1?

Susan Sarandon
Susan Sarandonasal
2024-10-29 08:34:02618semak imbas

How to Solve UTF-8 Encoding Issues in MySQL and Java JDBC Connector 5.1?

Menyelesaikan masalah Pengekodan UTF-8 dengan MySQL dan Java JDBC Connector 5.1

Dalam senario yang melibatkan penyegerakan antara dua pangkalan data MySQL UTF-8 menggunakan IBATIS atau JDBC, pembangun Java mungkin menghadapi masalah semasa mengendalikan data UTF-8. Berikut ialah analisis mendalam tentang masalah dan penyelesaiannya.

Simptom:

  • Setelah membaca data daripada pangkalan data pertama, kod Java menemui bukan standard aksara seperti 'ó' dan bukannya 'ó'.
  • Data bertulis dalam pangkalan data kedua kekal tidak berubah.
  • Melihat data yang dimuatkan dalam aplikasi web (walaupun menetapkan Jenis Kandungan dalam HTML sebagai "text/html; charset=utf-8") masih memaparkan aksara bukan standard.
  • Semasa menyahkod data menggunakan "New String(data.getBytes("UTF-8"))" menghasilkan aksara yang betul ('ó'), menggunakan penyelesaian ini secara global tidak berdaya maju.

Punca:

  • Tetapan pengekodan aksara yang tidak sepadan antara pangkalan data, Aplikasi Java dan aplikasi web.

Tetapan Pangkalan Data:

  • character_set_server: latin1
  • character_set_connection: utf8
  • character_set_results: utf8

Masalahnya terletak terutamanya pada tetapan "character_set_server" menjadi "latin1."

Penyelesaian:

baca dan tulis data UTF-8 dengan betul menggunakan Penyambung JDBC, tetapan ini mesti ditetapkan secara eksplisit pada permulaan sambungan:

<code class="java">DriverManager.getConnection(
           "jdbc:mysql://" + host + "/" + dbName 
           + "?useUnicode=true&amp;characterEncoding=UTF-8", user, pass);</code>

Ini memastikan sambungan menggunakan pengekodan UTF-8 di seluruh, termasuk pengekodan aksara, set hasil, mesej pengecualian, dan sebarang rentetan dalaman yang dicipta oleh pemacu.

Nota:

  • Masalah terutamanya mempengaruhi pengambilan data daripada pangkalan data pertama dan menulis kepada yang kedua pangkalan data.
  • Dengan mematuhi tetapan ini, kod Java dan aplikasi web akan mengendalikan data UTF-8 dengan tepat, menghasilkan paparan aksara yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu Pengekodan UTF-8 dalam MySQL dan Java JDBC Connector 5.1?. 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