Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membetulkan Ralat 'Nilai rentetan yang salah' Apabila Memasukkan Data UTF-8 ke MySQL melalui JDBC?

Bagaimana untuk Membetulkan Ralat 'Nilai rentetan yang salah' Apabila Memasukkan Data UTF-8 ke MySQL melalui JDBC?

DDD
Lepaskan: 2024-12-30 11:59:10
asal
251 orang telah melayarinya

How to Fix

Mengendalikan Nilai Rentetan Yang Salah Apabila Memasukkan UTF-8 ke MySQL melalui JDBC

Apabila cuba memasukkan data UTF-8 ke dalam pangkalan data MySQL menggunakan JDBC, anda mungkin menghadapi mesej ralat, "Nilai rentetan salah: 'xF0x90x8Dx83xF0x90...'" Ralat ini sering berlaku apabila teks yang dimasukkan mengandungi aksara yang tidak boleh diwakili dalam set aksara utf8 MySQL.

Manakala tetapan sambungan anda termasuk penggunaan Unicode ("useUnicode=true") dan Pengekodan UTF-8 ("characterEncoding=utf-8"), pengekodan utf8 MySQL sahaja menyokong aksara Unicode yang boleh diwakili dengan 3 bait dalam UTF-8. Watak yang menyebabkan ralat, walau bagaimanapun, memerlukan 4 bait.

Penyelesaian:

Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:

  • Tukar Pengekodan Lajur kepada utf8mb4:
    Jika versi MySQL anda ialah 5.5 atau kemudian, anda boleh menukar pengekodan lajur untuk lajur yang terjejas daripada utf8 kepada utf8mb4. Pengekodan ini membenarkan penyimpanan aksara yang menduduki 4 bait dalam UTF-8.
  • Ubah Suai Konfigurasi Pelayan:
    Selain itu, anda mungkin perlu menetapkan sifat pelayan character_set_server kepada utf8mb4 dalam MySQL anda fail konfigurasi. Ini memastikan MySQL menyokong set aksara UTF-8 4-bait secara lalai.

Perhatikan bahawa Connector/J, yang biasa digunakan untuk sambungan JDBC dengan MySQL, lalai kepada Unicode 3-bait. Oleh itu, adalah disyorkan untuk meninggalkan pengekodan aksara daripada rentetan sambungan anda dan mengkonfigurasi pelayan MySQL dengan character_set_server=utf8mb4 untuk membenarkan Connector/J mengesan secara automatik tetapan UTF-8.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Nilai rentetan yang salah' Apabila Memasukkan Data UTF-8 ke MySQL melalui JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan