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
Lepaskan: 2024-12-10 18:03:17
asal
894 orang telah melayarinya

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"}
Salin selepas log masuk

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"
Salin selepas log masuk

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":"馬"}
Salin selepas log masuk

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!

sumber:php.cn
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