Isu Pengekodan UTF-8 dengan PDO dan MySQL
Apabila menggunakan perpustakaan PHP Data Objects (PDO) dengan pangkalan data MySQL, anda boleh menghadapi masalah dengan pengekodan UTF-8. Data yang dimasukkan ke dalam pangkalan data dalam UTF-8 mungkin muncul sebagai aksara yang rosak, seperti "?????????".
Untuk menyelesaikannya, mengikut garis panduan dalam rangka kerja anda, laksanakan pertanyaan " SET NAMA utf8" dan "SET CHARACTER SET utf8" selepas mewujudkan sambungan PDO. Walau bagaimanapun, jika pertanyaan ini tidak membetulkan isu ini, pertimbangkan penyelesaian berikut:
Penyelesaian:
Tukar data kepada rentetan berkod JSON sebelum memasukkannya ke dalam pangkalan data menggunakan fungsi json_encode. Dapatkan semula data menggunakan json_decode selepas mengambilnya daripada pangkalan data. Pendekatan ini harus menyelesaikan isu pengekodan.
Pendekatan Dioptimumkan:
Untuk PHP versi 5.3.5 dan lebih awal, anda boleh menetapkan set aksara UTF-8 semasa pemulaan sambungan . Ini boleh dicapai dengan kod berikut:
$pdo = new PDO( 'mysql:host=hostname;dbname=defaultDbName', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );
Ini memastikan pengekodan UTF-8 dipaksa pada sambungan PDO, menyelesaikan isu pengekodan UTF-8 yang rosak.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu Pengekodan UTF-8 dengan PDO dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!