Apabila menggunakan pangkalan data MySQL, kadangkala anda akan menemui jadual bercelaru, yang boleh menyebabkan pertanyaan, sisipan dan operasi lain gagal. Artikel ini akan memperkenalkan sebab mengapa jadual MySQL bercelaru dan cara menyelesaikannya.
1. Sebab
Apabila pangkalan data MySQL dan klien anda tidak menggunakan pengekodan yang sama, aksara yang bercelaru akan muncul. Sebagai contoh, apabila pelanggan anda menggunakan pengekodan UTF-8 dan pangkalan data MySQL menggunakan pengekodan GBK, aksara bercelaru akan muncul.
Apabila beberapa set aksara dalam pangkalan data MySQL tidak sepadan dengan set aksara yang sedang anda gunakan, aksara bercelaru juga akan berlaku.
Jika anda memasukkan rentetan yang dikodkan GBK ke dalam jadual yang dikodkan UTF-8, aksara yang bercelaru akan dijana .
2. Penyelesaian
Jika pengekodan yang digunakan oleh pangkalan data MySQL dan klien tidak konsisten, maka kami boleh mengubah suai pengekodan pangkalan data MySQL. Dalam MySQL, anda boleh menggunakan arahan berikut untuk mengubah suai pengekodan pangkalan data:
ALTER DATABASE [database_name] DEFAULT CHARACTER SET [charset_name];
Di mana, database_name
ialah nama pangkalan data anda dan charset_name
ialah nama pengekodan yang anda ingin tetapkan. Sebagai contoh, jika anda ingin menukar pangkalan data kepada pengekodan UTF-8, anda boleh menggunakan arahan berikut:
ALTER DATABASE mydatabase DEFAULT CHARACTER SET utf8;
Jika kaedah di atas tidak menyelesaikan masalah, Kemudian ia mungkin disebabkan oleh ketidakpadanan dalam pengekodan jadual. Kita boleh menggunakan arahan berikut untuk mengubah suai pengekodan jadual:
ALTER TABLE [table_name] CONVERT TO CHARACTER SET [charset_name];
di mana table_name
ialah nama jadual yang anda ingin ubah suai dan charset_name
ialah nama pengekodan yang anda ingin tetapkan . Contohnya, jika anda ingin menukar jadual mytable
dalam pangkalan data kepada pengekodan UTF-8, anda boleh menggunakan arahan berikut:
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8;
Jika MySQL Beberapa set aksara dalam pangkalan data tidak sepadan dengan set aksara yang anda sedang gunakan, maka kami boleh menggunakan arahan berikut untuk mengubah suai set aksara:
SET NAMES [charset_name];
Sebagai contoh, jika anda menggunakan UTF- 8 set aksara, maka anda boleh Gunakan arahan berikut:
SET NAMES utf8;
Jika anda perlu memasukkan data yang tidak dikodkan UTF-8 ke dalam Jadual dikodkan UTF-8, kemudian Anda boleh menggunakan arahan berikut untuk menukar pengekodan:
CONVERT([string] USING [charset_name]);
di mana, string
ialah rentetan yang anda mahu masukkan dan charset_name
ialah nama pengekodan yang anda mahu tukar . Sebagai contoh, jika anda ingin memasukkan rentetan yang dikodkan GBK ke dalam jadual yang dikodkan UTF-8, anda boleh menggunakan arahan berikut:
INSERT INTO mytable (mycolumn) VALUES (CONVERT('你好', USING gbk));
Jika anda sudah mempunyai data yang bercelaru dalam jadual anda, anda boleh menggunakan alat pembersihan data untuk memprosesnya. Sebagai contoh, anda boleh menggunakan perintah iconv
untuk menukar data yang dikodkan GBK kepada pengekodan UTF-8:
$ iconv -f GBK -t UTF-8 < input.txt > output.txt
Fail input ialah input.txt
dan fail output ialah output.txt
.
Ringkasan
Sebab mengapa jadual MySQL bercelaru mungkin pengekodan tidak konsisten, ketidakpadanan set aksara, memasukkan data bukan berkod UTF-8, dsb. Atas sebab yang berbeza, kita boleh menggunakan penyelesaian yang berbeza, seperti mengubah suai pengekodan pangkalan data MySQL, mengubah suai pengekodan jadual, mengubah suai set aksara, menukar pengekodan apabila memasukkan data atau menggunakan alat pembersihan data. Apabila menggunakan pangkalan data MySQL, kita harus mengelakkan aksara yang bercelaru sebanyak mungkin untuk memastikan operasi normal pangkalan data.
Atas ialah kandungan terperinci kod kacau jadual mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!