Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `json_encode` PHP Gagal dengan Petikan Tunggal dalam Nilai Harta?

Mengapakah `json_encode` PHP Gagal dengan Petikan Tunggal dalam Nilai Harta?

Barbara Streisand
Barbara Streisandasal
2024-10-26 12:15:29177semak imbas

Why Does PHP's `json_encode` Fail with Single Quotes in Property Values?

Pengekodan JSON Gagal dengan Petikan Tunggal: Misteri PHP

Apabila menggunakan fungsi json_encode PHP untuk menukar objek stdClass kepada JSON, anda mungkin menghadapi kegagalan yang membingungkan mengakibatkan nilai harta benda hilang. Mari kita teroka isu ini dan temui penyelesaian.

Contoh yang diberikan menunjukkan tingkah laku:

<code class="php">$post = new stdClass();
$post->post_title = "Alumnus' Dinner Coming Soon"; // note the single quote

$json = json_encode($post);
echo $json; // outputs {"ID":"12981","post_title":null,"post_parent":"0","post_date":"2012-01-31 12:00:51"}</code>

JSON yang terhasil tidak mempunyai sifat "post_title" disebabkan isu pemformatan dengan petikan tunggal. Spesifikasi JSON menentukan bahawa petikan tunggal tidak dibenarkan dalam kunci atau nilai harta, yang dipatuhi dengan ketat oleh json_encode.

Untuk menyelesaikannya, ikut langkah berikut:

1. Pastikan Pengekodan UTF-8:

Sambungan pangkalan data mesti menentukan pengekodan UTF-8 untuk mendapatkan semula data dengan betul. Bergantung pada kaedah sambungan anda:

  • Panggil mysql_set_charset("utf8") untuk API MySQL yang telah ditamatkan.
  • Panggil mysqli_set_charset("utf8") untuk mysqli.
  • Tambahkan charset=utf8 pada rentetan sambungan untuk PDO (PHP >=5.3.6) atau jalankan SET NAMES utf8.

2. Nyahkod Petikan Tunggal:

Jika anda menghadapi isu pengekodan aksara, pertimbangkan menyahkod petikan tunggal secara eksplisit. Katakan pangkalan data anda mengembalikan "Alumnus? Makan Malam Akan Datang" untuk "post_title":

<code class="php">$post->post_title = str_replace("\x92", "'", $post->post_title);</code>

Ini menukar aksara yang salah kepada petikan tunggal yang sah, memastikan pengekodan JSON yang betul.

Atas ialah kandungan terperinci Mengapakah `json_encode` PHP Gagal dengan Petikan Tunggal dalam Nilai Harta?. 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