Rumah  >  Artikel  >  pangkalan data  >  Mengapa UTF-8 Strings Bercelaru Apabila Menggunakan JDBC dengan MySQL?

Mengapa UTF-8 Strings Bercelaru Apabila Menggunakan JDBC dengan MySQL?

Susan Sarandon
Susan Sarandonasal
2024-11-01 16:24:02352semak imbas

Why are UTF-8 Strings Garbled When Using JDBC with 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!

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