Fungsi json_encode PHP Gagal Senyap Kerana Pengekodan Petikan Tunggal
Apabila cuba mengekod objek PHP stdClass ($post) menggunakan json_encode() , JSON yang terhasil tidak mempunyai sifat "post_title", menunjukkan kegagalan senyap dalam proses pengekodan. Isu timbul apabila nilai "post_title" mengandungi petikan tunggal.
Masalah asas adalah berkaitan dengan pengekodan aksara dalam pangkalan data MySQL. Secara lalai, MySQL menggunakan pengekodan aksara seperti windows-1252, yang mewakili petikan tunggal sebagai urutan bait yang berbeza berbanding dengan UTF-8. Ketakpadanan pengekodan ini boleh menyebabkan json_encode() menemui aksara UTF-8 yang tidak betul.
Penyelesaian
Untuk menyelesaikan isu ini, pastikan sambungan ke pangkalan data MySQL dikonfigurasikan untuk menggunakan pengekodan aksara UTF-8. Ini boleh dicapai melalui kaedah seperti:
Secara bergantian, PDO menyediakan pilihan untuk melaksanakan perintah SET NAMES utf8 selepas membuat sambungan.
Pertimbangan Tambahan
Jika petikan tunggal muncul dalam pangkalan data sebagai aksara dengan kod perenambelasan 92, ini adalah pengesahan lanjut bahawa pelanggan mengekod teks dalam windows-1252 . Untuk menangani perkara ini, pertimbangkan untuk menggunakan str_replace("x92", "'", $input) untuk menggantikan aksara bermasalah dengan petikan tunggal dalam PHP.
Dengan memastikan pengekodan aksara yang betul dalam pangkalan data MySQL dan potensi pengendalian isu pengekodan dalam PHP, kegagalan senyap json_encode() boleh diselesaikan, memastikan pengekodan tepat bagi petikan tunggal dan aksara bukan ASCII lain dalam JSON yang terhasil.
Atas ialah kandungan terperinci Mengapakah json_encode() PHP Berfungsi Secara Senyap Apabila Mengekodkan Petikan Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!