Rumah > pembangunan bahagian belakang > tutorial php > 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
Lepaskan: 2024-10-27 08:15:31
asal
656 orang telah melayarinya

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan