Aksara bercelaru muncul apabila MySQL memasukkan data, yang merupakan masalah yang akan dihadapi oleh ramai pembangun. Artikel ini akan memperkenalkan punca MySQL bercelaru aksara dan cara menyelesaikan masalah MySQL memasukkan data bercelaru.
MySQL memasukkan data ke dalam aksara bercelaru, terutamanya disebabkan oleh sebab berikut:
(1) Ketidakkonsistenan pengekodan set aksara MySQL
Jika pengekodan set aksara yang digunakan oleh MySQL dan aplikasi tidak konsisten, aksara bercelaru akan berlaku.
(2) Pengekodan set aksara jadual dan medan adalah tidak konsisten
Jika pengekodan set aksara jadual dan medan tidak konsisten, aksara bercelaru akan muncul apabila MySQL memasukkan data.
(3) Pengekodan set aksara lalai MySQL
Pengekodan set aksara lalai MySQL adalah latin1 Jika pengekodan set aksara tidak dinyatakan semasa membuat pangkalan data atau jadual, aksara yang bercelaru akan muncul.
Untuk menangani masalah di atas, terdapat beberapa penyelesaian:
(1) Ubah suai pengekodan set aksara MySQL
Anda boleh mengubah suai pengekodan set aksara MySQL dengan mengubah suai fail konfigurasi my.cnf MySQL untuk menjadikannya konsisten dengan pengekodan set aksara yang digunakan oleh aplikasi. Contohnya, tambahkan kandungan berikut pada fail konfigurasi my.cnf:
[mysqld] character-set-server = utf8
Selepas memulakan semula perkhidmatan MySQL, pengekodan set aksara MySQL akan diubah suai kepada utf8.
(2) Ubah suai pengekodan set aksara bagi jadual dan medan
Dengan mengubah suai pengekodan set aksara bagi jadual dan medan, pastikan ia konsisten dengan pengekodan set aksara yang digunakan oleh MySQL dan aplikasi. Contohnya, tukar pengekodan set aksara jadual kepada utf8:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
Tukar pengekodan set aksara medan kepada utf8:
ALTER TABLE table_name MODIFY field_name VARCHAR(100) CHARACTER SET utf8;
(3) Tentukan aksara lalai pengekodan set MySQL
Pengekodan set aksara boleh ditentukan semasa mencipta pangkalan data atau jadual. Sebagai contoh, nyatakan pengekodan set aksara semasa mencipta pangkalan data:
CREATE DATABASE database_name DEFAULT CHARACTER SET utf8;
Tentukan pengekodan set aksara semasa membuat jadual:
CREATE TABLE table_name ( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Menggunakan kaedah di atas, anda boleh menyelesaikan dengan berkesan masalah data bercelaru yang dimasukkan ke dalam soalan MySQL.
Ringkasan
Data yang dimasukkan MySQL bercelaru, yang disebabkan oleh pengekodan set aksara MySQL yang tidak konsisten, pengekodan set aksara yang tidak konsisten bagi jadual dan medan, pengekodan set aksara lalai MySQL, dsb. Untuk menyelesaikan masalah ini, anda boleh mengubah suai pengekodan set aksara MySQL, mengubah suai pengekodan set aksara jadual dan medan, dan menentukan pengekodan set aksara lalai MySQL. Dalam proses pembangunan sebenar, anda perlu memberi perhatian kepada tetapan pengekodan set aksara untuk mengelakkan aksara bercelaru.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah data bercelaru yang dimasukkan ke dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!