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

Patricia Arquette
Lepaskan: 2024-11-01 10:47:02
asal
509 orang telah melayarinya

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

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

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

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!

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!