Rumah > Artikel > pangkalan data > Mengapakah aplikasi Java saya memaparkan aksara UTF-8 yang herot apabila berinteraksi dengan pangkalan data MySQL?
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!