Dalam pembangunan, adalah perkara biasa untuk menghadapi masalah aksara bercelaru apabila menggunakan MySQL. Dalam artikel ini, kami akan meneroka apa yang menyebabkan aksara bercelaru dalam MySQL dan cara membetulkannya.
Sebab aksara bercelaru biasanya berkaitan dengan tiga faktor berikut:
Penggunaan MySQL Set aksara mungkin tidak sepadan dengan set aksara yang digunakan oleh aplikasi anda. Ini sering mengakibatkan ralat penukaran aksara, mengakibatkan aksara bercelaru.
Sebagai contoh, jika aplikasi anda menggunakan pengekodan UTF-8, tetapi pangkalan data MySQL menggunakan pengekodan Latin1, maka apabila anda mendapat data yang dikodkan Latin1 daripada pangkalan data dan cuba memaparkannya dalam aplikasi, anda akan A kod kacau. masalah berlaku.
Kadangkala, aksara bercelaru mungkin disebabkan oleh ralat penyimpanan data. Ini biasanya berlaku apabila memasukkan atau mengemas kini data kerana MySQL cuba menukar data kepada set aksara yang ditentukan. Jika ralat berlaku semasa proses penukaran, aksara akan bercelaru.
Sebagai contoh, jika anda memasukkan rentetan dengan aksara bukan ASCII ke dalam jadual format Latin1, ia akan menyebabkan ralat penyimpanan data, mengakibatkan aksara bercelaru.
Tetapan set aksara klien sambungan MySQL mungkin tidak betul, mengakibatkan aksara bercelaru. Ini biasanya disebabkan oleh klien tidak mempunyai pilihan set aksara yang dikonfigurasikan dengan betul.
Untuk menyelesaikan masalah bercelaru aksara MySQL, anda perlu menyemak tiga faktor di atas satu demi satu dan mengambil penyelesaian yang sepadan. Berikut ialah beberapa penyelesaian biasa:
Pastikan pangkalan data MySQL, jadual dan klien penyambung semuanya menggunakan set aksara yang sama. Set aksara UTF-8 disyorkan kerana ia menyokong kebanyakan bahasa dan set aksara.
Anda boleh menetapkan set aksara MySQL dengan cara berikut:
Tukar character_set_server
, character_set_database
, character_set_connection
Parameter , character_set_results
dan character_set_client
ditetapkan kepada utf8mb4.
SET character_set_server = utf8mb4; SET character_set_database = utf8mb4; SET character_set_connection = utf8mb4; SET character_set_results = utf8mb4; SET character_set_client = utf8mb4;
Anda boleh menetapkan set aksara semasa mencipta jadual:
CREATE TABLE example ( id INT NOT NULL, name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, email VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, PRIMARY KEY (id) );
Anda boleh menggunakan arahan ALTER TABLE untuk mengubah suai set aksara jadual:
ALTER TABLE example CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Jika data disimpan dengan tidak betul, anda boleh mengambil langkah berikut:
Jika rentetan anda dengan aksara bukan ASCII disimpan sebagai aksara ASCII, ralat penyimpanan data akan berlaku. Pada masa ini, jenis data perlu ditukar kepada jenis yang betul. Contohnya, tukar VARCHAR kepada TEXT.
ALTER TABLE example MODIFY name TEXT CHARACTER SET utf8mb4;
Jika data telah disimpan dengan tidak betul, anda boleh memadamkan rekod yang bermasalah dan memasukkan semula rekod yang betul. Pastikan anda menetapkan pilihan set aksara yang betul sebelum memasukkan semula.
Apabila menyambung ke pangkalan data MySQL, anda boleh menetapkan set aksara klien. Pilihan berikut boleh ditambah pada rentetan sambungan:
jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=utf8
Pilihan di atas akan menetapkan set aksara klien kepada UTF-8.
Artikel ini memperkenalkan punca aksara MySQL bercelaru dan cara menyelesaikannya. Penyelesaian terutamanya termasuk menetapkan set aksara yang betul, menyemak sama ada data disimpan dengan betul dan menetapkan set aksara klien. Dengan penyelesaian yang jelas dan petua praktikal, anda boleh menyelesaikan dengan berkesan sebarang masalah bercelaru watak, dengan itu meningkatkan kestabilan dan kebolehpercayaan aplikasi anda.
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika aksara mysql bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!