Apabila cuba memasukkan rentetan yang mengandungi aksara emoji ke dalam pangkalan data MySQL menggunakan JDBC, anda mungkin menghadapi pengecualian berikut:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...'
Ralat ini timbul kerana set aksara utf8 lalai MySQL hanya menyokong aksara dalam Asas Pesawat berbilang bahasa. Untuk menyelesaikan isu ini, anda perlu mendayakan sokongan untuk set aksara utf8mb4, yang memanjangkan utf8 untuk meliputi satah lanjutan tempat aksara emoji berada.
Tetapkan pengekodan sambungan kepada utf8mb4 dengan segera selepas mewujudkan sambungan:
DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password").prepareStatement("SET NAMES 'utf8mb4'");
Kemas kini set aksara dan pengumpulan pangkalan data anda dan jadual yang terjejas kepada utf8mb4:
ALTER DATABASE `database` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Pastikan kod Java anda menggunakan set charset utf8mb4 untuk pengekodan aksara rentetan. Contohnya, dengan Connector/J:
DriverManager.getConnection("jdbc:mysql://localhost:3306/database?characterEncoding=utf8mb4", "username", "password"); // ... preparedStatement.setString(1, "walmart obama ?"); // Emoji characters should be supported now
Dengan mengikuti langkah ini, anda boleh mendayakan sokongan untuk utf8mb4 dan menyelesaikan pengecualian nilai rentetan yang salah apabila memasukkan aksara emoji ke dalam pangkalan data MySQL anda.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Pengecualian \'Nilai rentetan yang salah\' Apabila Memasukkan Emoji ke dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!