Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat \'Nilai Rentetan Salah\' Semasa Memasukkan Emoji ke dalam Pangkalan Data MySQL di Java?

Bagaimana untuk Menyelesaikan Ralat \'Nilai Rentetan Salah\' Semasa Memasukkan Emoji ke dalam Pangkalan Data MySQL di Java?

Patricia Arquette
Lepaskan: 2024-11-23 12:03:11
asal
279 orang telah melayarinya

How to Resolve

Pengecualian Pengekodan: "Nilai Rentetan Salah" dengan Emoji dalam Java-MySQL

Dalam aplikasi Java menggunakan MySQL, pengecualian "java. sql.SQLException: Nilai rentetan salah: 'xF0x9Fx91xBDxF0x9F...'" mungkin ditemui apabila memasukkan rentetan yang mengandungi aksara emoji. Ralat ini berlaku disebabkan oleh perbezaan dalam pengekodan aksara.

Nilai rentetan yang dimaksudkan mengandungi "walmart obama ??", di mana "???" mewakili emoji. Dalam pangkalan data, pembolehubah tempat rentetan dimasukkan ditakrifkan sebagai varchar(255) SET WATAK utf8 COLLATE utf8_general_ci NOT NULL. Walau bagaimanapun, versi MySQL yang digunakan oleh aplikasi hanya menyokong aksara satah berbilang bahasa (BMP) asas dalam pengekodan UTF-8. Aksara emoji, yang berada di luar BMP, tidak dapat diwakili dengan betul dalam pengekodan ini.

Untuk menyelesaikan isu ini, anda perlu menukar kepada pengekodan UTF-8mb4, yang menyokong aksara tambahan. Ini melibatkan membuat pelarasan berikut:

  1. Pastikan pelayan MySQL anda adalah versi 5.5 atau lebih tinggi.
  2. Tetapkan pengekodan sambungan MySQL kepada "utf8mb4" menggunakan pertanyaan SET NAMES 'utf8mb4' selepas mewujudkan sambungan.
  3. Ubah suai jadual pangkalan data untuk menggunakan pengekodan UTF-8mb4 untuk lajur yang terjejas, cth., var1 varchar(255) SET KARAKTER utf8mb4 COLLATE utf8mb4_general_ci NOT NULL.
  4. Gunakan Java Connector/J untuk mewujudkan sambungan dan pastikan characterEncoding tidak ditetapkan secara eksplisit dalam rentetan sambungan, kerana ini akan mencetuskan pengesanan automatik watak pelayan ditetapkan.

Dengan membuat perubahan ini, aplikasi anda akan dapat mengendalikan aksara emoji dengan betul menggunakan pengekodan UTF-8mb4, menyelesaikan pengecualian "Nilai rentetan yang salah".

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Nilai Rentetan Salah\' Semasa Memasukkan Emoji ke dalam Pangkalan Data MySQL di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan