Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Watak Unikod Khas Muncul Herot Selepas Pengekodan JSON?

Mengapa Watak Unikod Khas Muncul Herot Selepas Pengekodan JSON?

Barbara Streisand
Barbara Streisandasal
2024-12-10 18:03:17870semak imbas

Why Do Special Unicode Characters Appear Distorted After JSON Encoding?

Mentafsir Aksara Unikod "Istimewa" Dikodkan sebagai JSON

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!

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