Apabila menggunakan PHP untuk menyambung ke MySQL, anda sering menghadapi masalah aksara bercelaru. Ini adalah masalah besar bagi kami apabila menulis laman web berbilang bahasa. Sebelum menangani masalah ini, kita perlu memahami dahulu sebab-sebab pembentukan watak bercelaru.
1. Sebab aksara bercelaru
Apabila menggunakan PHP untuk menyambung ke MySQL, jika set aksara MySQL tidak konsisten dengan set aksara PHP, aksara bercelaru akan muncul. Sebab khusus adalah seperti berikut:
- Set aksara MySQL dan set aksara PHP adalah tidak konsisten
Set aksara lalai MySQL ialah UTF-8, dan set aksara lalai PHP ialah ISO-8859-1. Jika anda tidak menentukan set aksara dalam kod PHP anda, PHP akan menggunakan set aksara ISO-8859-1. Pada masa ini, jika data yang ditanya daripada MySQL mengandungi aksara UTF-8, aksara bercelaru akan muncul.
- Set aksara bagi jadual data MySQL tidak konsisten dengan set aksara pelayan MySQL
Dalam MySQL, setiap jadual data mempunyai set aksara lalai. Jika set aksara jadual data tidak konsisten dengan set aksara pelayan MySQL, aksara bercelaru mungkin muncul.
- Cara PHP menyambung ke MySQL adalah salah
Apabila menyambung ke MySQL, PHP mempunyai berbilang kaedah sambungan, seperti mysql_connect, mysqli_connect, PDO, dsb. Kaedah sambungan yang berbeza akan menggunakan kaedah pengekodan yang berbeza Jika dipilih secara tidak betul, ia akan menyebabkan masalah kod bercelaru.
2. Selesaikan masalah kod bercelaru
Berdasarkan sebab di atas, langkah-langkah berikut boleh diambil untuk menyelesaikan masalah kod bercelaru.
- Nyatakan set aksara untuk PHP
Dalam kod PHP, selesaikan masalah aksara bercelaru dengan menyatakan set aksara. Anda boleh menggunakan kod berikut:
header('Content-Type:text/html;charset=utf-8');
- Ubah suai set aksara lalai MySQL
Anda boleh mengubah suai set aksara lalai MySQL dalam fail konfigurasi MySQL my.cnf. Buka fail, cari bahagian [mysqld], dan tambah kod berikut:
character-set-server=utf8
- Ubah suai set aksara jadual data MySQL
Anda boleh mengubah suai set aksara daripada jadual data melalui pernyataan berikut:
ALTER TABLE {table_name} CONVERT TO CHARACTER SET utf8;
- Ubah suai cara PHP menyambung ke MySQL
Anda boleh menggunakan PDO untuk menyambung ke MySQL dan menentukan set aksara semasa menyambung, seperti berikut:
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'password');
Jika anda menggunakan mysqli untuk menyambung ke MySQL, anda boleh menentukan set aksara melalui kod berikut:
$mysqli = mysqli_connect('localhost', 'root', 'password', 'test');
mysqli_set_charset($mysqli, 'utf8');
- Simpan PHP fail sebagai format pengekodan UTF-8
Jika fail PHP anda mengandungi aksara Cina, maka apabila menyimpan fail, pastikan anda menyimpan fail dalam format pengekodan UTF-8, jika tidak, aksara yang bercelaru akan muncul.
Ringkasnya, masalah bercelaru sambungan PHP ke MySQL adalah masalah yang sangat biasa, tetapi selagi anda menguasai penyelesaiannya, anda boleh menanganinya dengan mudah. Saya harap artikel ini dapat membantu semua orang.
Atas ialah kandungan terperinci Apakah sebab masalah bercelaru php menyambung ke mysql? Bagaimana untuk menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan: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