Ralat Nilai Rentetan Tidak Betul dengan Sisipan UTF-8 dalam MySQL melalui JDBC
Apabila cuba memasukkan teks Unicode ke dalam pangkalan data MySQL menggunakan JDBC, pengguna mungkin menghadapi ralat "Nilai rentetan salah", khususnya apabila teks mengandungi jujukan bait xF0. Isu ini sering muncul dengan set data yang besar dan boleh dikaitkan dengan pengehadan lalai MySQL.
Punca Ralat:
Pengekodan utf8 MySQL hanya menyokong aksara Unicode yang boleh diwakili dalam tiga bait. Walau bagaimanapun, aksara Unicode tertentu, seperti xF0x90x8Dx83, memerlukan empat bait dalam UTF-8. Percubaan untuk memasukkan aksara sedemikian ke dalam lajur berkod utf8 mencetuskan ralat.
Penyelesaian:
Untuk menyelesaikan isu, dua pendekatan boleh diambil:
Tukar Lajur Pengekodan:
Kemas kini pengekodan lajur kepada utf8mb4, yang menyokong aksara Unicode empat bait. Ini boleh dilakukan menggunakan pernyataan SQL berikut:
ALTER TABLE <table_name> MODIFY COLUMN <column_name> TEXT COLLATE utf8mb4;
Konfigurasikan Sifat Pelayan:
Jika menggunakan MySQL versi 5.5 atau lebih baru, tetapkan sifat character_set_server dalam fail konfigurasi MySQL kepada utf8mb4 untuk membolehkan pelayan mengendalikan Unicode empat bait aksara.
character_set_server = utf8mb4
Konfigurasi Penyambung/J:
Penyambung/J mengesan secara automatik tetapan UTF-8 apabila parameter Pengekodan aksara diabaikan daripada rentetan sambungan. Oleh itu, untuk set aksara UTF-8 empat bait, biarkan pengekodan aksara dan tetapkan pelayan_set_aksara seperti yang diterangkan di atas.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Nilai Rentetan Tidak Betul' Apabila Memasukkan Teks Unikod ke MySQL menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!