Rumah > Artikel > pangkalan data > Mengapa UTF-8 Strings Bercelaru Apabila Menggunakan JDBC dengan MySQL?
Kesilapan dalam Mengendalikan Rentetan UTF-8 MySQL dalam JDBC
Mengendalikan rentetan UTF-8 dalam MySQL secara salah melalui antara muka JDBC boleh membawa kepada data isu rasuah atau paparan. Artikel ini mengkaji senario di mana data yang dimasukkan melalui JDBC kelihatan bercelaru dalam pangkalan data.
Coretan kod yang disediakan menunjukkan atur cara Java yang mewujudkan sambungan ke pangkalan data MySQL dan memasukkan teks UTF-8 ke dalam jadual. Walau bagaimanapun, selepas mengesahkan data yang dimasukkan, teks dipaparkan secara tidak betul, dengan aksara yang dijangkakan digantikan dengan tanda soal.
Masalahnya terletak pada tetapan pengekodan aksara dalam MySQL. Secara lalai, MySQL menggunakan set aksara latin1 dan penyusunan, yang tidak serasi dengan UTF-8. Untuk menyelesaikannya, langkah berikut adalah penting:
1. Sahkan Tetapan Pengekodan Aksara
Laksanakan arahan SQL berikut untuk melihat tetapan pengekodan aksara semasa:
show variables like 'character%'; show variables like 'collation%';
Output hendaklah menunjukkan bahawa pengekodan aksara ditetapkan kepada utf8 untuk kedua-dua pelayan dan pangkalan data.
2. Konfigurasikan MySQL untuk UTF-8
Jika pengekodan tidak betul, ubah suainya dengan mengemas kini fail konfigurasi MySQL (my.cnf) dengan menambah baris berikut:
[mysqld] character-set-server = utf8 character-set-filesystem = utf8
Sebagai alternatif, anda boleh menggunakan MySQL Workbench untuk mengubah suai tetapan ini secara visual.
3. Sambung dengan Parameter URL yang Betul
Apabila membuat sambungan Java, masukkan parameter berikut dalam URL JDBC:
jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8
4. Alih Keluar Perintah yang Tidak Diperlukan
Alih keluar arahan berikut daripada kod anda:
query = "set character set utf8"; stat.execute(query);
Arahan ini tidak diperlukan apabila parameter sambungan dikonfigurasikan dengan betul.
Hasil Jangkaan
Selepas menggunakan perubahan ini dan memulakan semula MySQL, data hendaklah disimpan dan diambil semula menggunakan JDBC dengan betul, dipaparkan dalam format UTF-8 yang dijangkakan.
Atas ialah kandungan terperinci Mengapa UTF-8 Strings Bercelaru Apabila Menggunakan JDBC dengan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!