Rumah >pembangunan bahagian belakang >tutorial php >Mengapa json_encode Mengembalikan Rentetan Kosong, dan Bagaimana Saya Boleh Membetulkannya?
Memahami Enigma json_encode Mengembalikan Rentetan Kosong
Fungsi json_encode PHP berfungsi untuk menukar tatasusunan, objek atau nilai skalar kepada JSON perwakilan rentetan. Walau bagaimanapun, dalam beberapa kes, pengguna menghadapi isu yang mengecewakan json_encode mengembalikan rentetan kosong dan bukannya output yang dijangkakan. Untuk merungkai tingkah laku yang membingungkan ini, mari kita teliti senario yang dilaporkan.
Pengguna cuba menukar struktur PHP kompleks yang mengandungi tatasusunan bersarang kepada JSON. Walaupun struktur serupa telah berjaya ditukar dalam skrip yang berbeza, json_encode gagal melaksanakan tugas yang dimaksudkan dalam contoh ini. Selepas beberapa usaha penyiasatan, ternyata pengekodan telah menyebabkan masalah.
Apabila pengekodan dikesan sebagai ASCII menggunakan mb_detect_encoding, json_encode berfungsi seperti yang diharapkan. Anehnya, apabila pengekodan ditentukan sebagai UTF8, ia tidak lagi berfungsi. Pemeriksaan yang lebih dekat dengan json_last_error() mendedahkan kod ralat yang menunjukkan aksara UTF-8 yang cacat.
Selepas berjam-jam menyahpepijat dengan teliti, penyelesaian didapati terletak dalam isu pengekodan. Walaupun mb_detect_encoding mungkin telah mengembalikan hasil yang tidak tepat, mencadangkan beberapa rentetan tidak dalam format UTF-8, menggunakan utf8_encode() pada rentetan tersebut telah menyelesaikan masalah.
Untuk memastikan penukaran yang konsisten, fungsi rekursif bernama utf8ize telah diperkenalkan. Fungsi ini secara berulang memeriksa tatasusunan, menukar semua rentetan yang terkandung kepada UTF-8. Dengan menggunakan fungsi ini sebelum menggunakan json_encode, pengguna telah menghapuskan halangan pengekodan.
Nota: Perlu dinyatakan bahawa utf8_encode() secara khusus menukar rentetan ISO-8859-1 kepada UTF-8. Jika pengekodan input tidak pasti atau rumit, pertimbangkan alternatif seperti iconv() atau mb_convert_encoding().
Atas ialah kandungan terperinci Mengapa json_encode Mengembalikan Rentetan Kosong, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!