Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `json_encode()` Gagal Apabila Mengekodkan Petikan Tunggal dalam PHP dengan Pengekodan Windows-1252?

Mengapakah `json_encode()` Gagal Apabila Mengekodkan Petikan Tunggal dalam PHP dengan Pengekodan Windows-1252?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 08:15:31527semak imbas

Why Does `json_encode()` Fail When Encoding Single Quotes in PHP with Windows-1252 Encoding?

Kegagalan json_encode PHP dengan Petikan Tunggal

Dalam senario yang melibatkan objek PHP stdClass ($post), fungsi json_encode() tiba-tiba gagal mengekod sifat post_title, mengakibatkan nilai nol dalam output JSON. Walaupun pengekodan UTF-8 jelas bagi pangkalan data, nampaknya proses pengambilan data mungkin tidak dikonfigurasikan dengan betul.

Punca: Pengekodan Salah

JSON isu pengekodan berpunca daripada pengekodan yang salah bagi aksara petikan tunggal dalam post_title. Khususnya, aksara itu dikodkan dalam Windows-1252, menghasilkan nilai heks 92, yang bukan aksara UTF-8 yang sah.

Penyelesaian: Tetapkan Pengekodan Sambungan Pangkalan Data

Untuk menyelesaikan masalah ini, pengekodan sambungan pangkalan data perlu ditetapkan kepada UTF-8. Kaedah yang digunakan bergantung pada API yang digunakan:

  • MySQL: mysql_set_charset("utf8")
  • MySQLi: mysqli_set_charset("utf8")
  • PDO (PHP > ;= 5.3.6): parameter charset dalam rentetan sambungan
  • PDO (versi terdahulu): SET NAMES utf8

Pertimbangan Tambahan

Perlu ambil perhatian bahawa menetapkan pengekodan sambungan memastikan data yang diambil daripada pangkalan data dikodkan dengan betul dalam UTF-8. Walau bagaimanapun, jika data disimpan dalam pengekodan yang salah, seperti Windows-1252, penukaran manual melalui utf8_encode() atau cara lain mungkin diperlukan.

Atas ialah kandungan terperinci Mengapakah `json_encode()` Gagal Apabila Mengekodkan Petikan Tunggal dalam PHP dengan Pengekodan Windows-1252?. 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