Rumah  >  Artikel  >  pangkalan data  >  Mengapakah aplikasi Java saya memaparkan aksara UTF-8 yang herot apabila berinteraksi dengan pangkalan data MySQL?

Mengapakah aplikasi Java saya memaparkan aksara UTF-8 yang herot apabila berinteraksi dengan pangkalan data MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-01 10:47:02510semak imbas

Why is my Java application displaying distorted UTF-8 characters when interacting with a MySQL database?

Menyelesaikan masalah Pengekodan UTF-8 dalam Interaksi JDBC MySQL

Dalam senario penyepaduan Java-MySQL menggunakan JDBC Connector 5.1, isu pengekodan pelik semasa membaca dan menulis data UTF-8. Aksara kelihatan herot atau bercelaru, menyebabkan visualisasi yang tidak dijangka dalam interaksi pangkalan data dan aplikasi web.

Untuk menyelesaikan enigma ini, periksa tetapan pangkalan data:

character_set_client-->utf8
character_set_connection-->utf8
character_set_database-->utf8
...
character_set_server-->latin1
...

Isu ini berpunca daripada set aksara yang tidak sepadan. Pelayan pangkalan data menggunakan 'latin1,' yang tidak menyokong UTF-8 secara asal. Untuk membetulkannya, tetapkan parameter 'useUnicode' dan 'characterEncoding' secara eksplisit dalam rentetan sambungan JDBC:

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

Ini memastikan kedua-dua operasi membaca dan menulis menggunakan UTF-8 secara konsisten.

The masalah mungkin tidak berkaitan dengan konfigurasi pangkalan data semata-mata. Aplikasi Java juga boleh mengendalikan UTF-8 secara tidak betul. Jika isu pengekodan berterusan selepas melaraskan tetapan pangkalan data, pertimbangkan menyahkod data daripada pangkalan data menggunakan:

new String(data.getBytes("UTF-8"));

Ini menukar data kepada rentetan UTF-8, membolehkan visualisasi yang betul dalam aplikasi Java. Walau bagaimanapun, elakkan ini sebagai penyelesaian umum, kerana ia mungkin mengganggu penulisan pangkalan data.

Atas ialah kandungan terperinci Mengapakah aplikasi Java saya memaparkan aksara UTF-8 yang herot apabila berinteraksi dengan pangkalan data MySQL?. 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