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
DDDasal
2024-12-30 11:59:10222semak imbas

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:
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