Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `json_encode()` mengembalikan nilai nol untuk sifat dengan petikan tunggal?

Mengapakah `json_encode()` mengembalikan nilai nol untuk sifat dengan petikan tunggal?

Susan Sarandon
Susan Sarandonasal
2024-11-02 00:04:29542semak imbas

Why is `json_encode()` returning null values for properties with single quotes?

Kegagalan Pengekodan JSON: Menyelesaikan Percanggahan dengan Petikan Tunggal

Pembangun kerap menghadapi kegagalan senyap apabila cuba mengekod objek menggunakan fungsi json_encode() PHP. Dalam konteks ini, pengguna menghadapi isu apabila pengekodan objek stdClass menghasilkan nilai nol untuk sifat yang mengandungi petikan tunggal.

Analisis

Setelah memeriksa isu itu, ia adalah mendapati bahawa punca asas adalah ketidakupayaan json_encode() untuk mengendalikan aksara di luar julat ASCII dengan betul. Watak petikan tunggal, yang diwakili sebagai x92 dalam longgokan hex, amat bermasalah.

Penyelesaian

Untuk menyelesaikan isu ini, adalah penting untuk memastikan data itu dikodkan dikodkan dengan betul dalam UTF-8. Ini boleh dicapai dengan menetapkan pengekodan sambungan MySQL dengan sewajarnya, bergantung pada API yang digunakan:

  • API Lama (Ditamatkan): mysql_set_charset("utf8")
  • mysqli: mysqli_set_charset("utf8")
  • PDO: Tambahkan parameter charset pada rentetan sambungan atau jalankan SET NAMES utf8 jika menggunakan PHP 5.3.6 atau lebih awal .

Pendekatan Alternatif

Penyelesaian alternatif boleh melibatkan penggunaan utf8_decode() untuk menukar teks kepada format yang dikodkan dengan betul. Walau bagaimanapun, ini mungkin tidak selalu menghasilkan hasil yang diingini, kerana ia mengandaikan bahawa teks dikodkan dalam ISO-8859-1.

Atas ialah kandungan terperinci Mengapakah `json_encode()` mengembalikan nilai nol untuk sifat dengan petikan tunggal?. 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