Apabila menggabungkan aksara Unikod "istimewa", ia sering kelihatan herot selepas dikodkan ke dalam JSON:
echo json_encode(['foo' => '馬']); // Output: {"foo":"\u99ac"}
Memahami mengapa ini berlaku adalah penting.
Piawai Pengekodan JSON
Pengekodan JSON memanfaatkan pembentukan literal rentetan ECMAScript (dahulunya dikenali sebagai JavaScript) (Bahagian 7.8.4). Ia membenarkan aksara untuk diwakili sebagai nombor perenambelasan yang diawali dengan "u", diikuti dengan empat digit perenambelasan mewakili titik kod:
"\u99ac"
Perwakilan ini, sama dengan rentetan literal "馬", menyampaikan Unikod yang sama aksara apabila dihuraikan oleh penghurai JSON yang mematuhi.
Pengekodan JSON PHP Keutamaan
Fungsi json_encode PHP selalunya mengekod aksara bukan ASCII menggunakan "u...." jujukan melarikan diri. Walaupun ini adalah pilihan, ia menghasilkan JSON yang sah.
Menyesuaikan Pengekodan
Jika dikehendaki, bendera JSON_UNESCAPED_UNICODE, yang diperkenalkan dalam PHP 5.4, membenarkan pengekodan aksara literal:
echo json_encode(['foo' => '馬'], JSON_UNESCAPED_UNICODE); // Output: {"foo":"馬"}
Adalah penting untuk ambil perhatian bahawa penyesuaian ini adalah keutamaan dan bukannya satu keperluan untuk menghantar aksara Unikod dalam JSON.
Atas ialah kandungan terperinci Mengapa Watak Unikod Khas Muncul Herot Selepas Pengekodan JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!