Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Beberapa Aksara Unikod Muncul sebagai Jujukan `\u....` dalam JSON?

Mengapa Beberapa Aksara Unikod Muncul sebagai Jujukan `\u....` dalam JSON?

Patricia Arquette
Patricia Arquetteasal
2024-12-19 19:30:11969semak imbas

Why Do Some Unicode Characters Appear as `u....` Sequences in JSON?

Mengapa Aksara Unikod "Istimewa" Muncul Dikodkan dengan u.... Urutan dalam JSON

Apabila mengekod aksara Unikod "istimewa" dengan PHP json_encode, ia sering muncul sebagai literal rentetan yang tidak dikenali yang diawali dengan "u". Tingkah laku ini wujud dalam mekanisme pengekodan aksara JSON dan tidak menunjukkan sebarang ralat pengekodan.

JSON membenarkan aksara untuk diwakili sebagai u.... urutan melarikan diri, di mana .... menandakan titik kod Unikod aksara . Ini bersamaan dengan cara literal rentetan dalam ECMAScript (JavaScript) dibentuk.

Sebagai contoh, aksara "馬" boleh diwakili sama ada "馬" atau "u99ac" dalam JSON. Kedua-dua literal mewakili watak yang sama dan sama sah. Apabila dihuraikan oleh penghurai JSON yang mematuhi, kedua-duanya akan menghasilkan rentetan yang sama.

Secara lalai, json_encode PHP mengutamakan u.... urutan melarikan diri untuk aksara bukan ASCII. Walau bagaimanapun, anda boleh mengatasi keutamaan ini dengan menyatakan bendera JSON_UNESCAPED_UNICODE dalam PHP 5.4 atau lebih baru. Ini akan menghasilkan output JSON dengan aksara literal dan bukannya urutan melarikan diri:

json_encode(['foo' => '馬'], JSON_UNESCAPED_UNICODE); // Output: {"foo":"馬"}

Adalah penting untuk ambil perhatian bahawa menyatakan JSON_UNESCAPED_UNICODE ialah keutamaan peribadi dan bukan keperluan untuk mengangkut aksara Unicode dalam JSON. Kedua-dua urutan melarikan diri dan aksara literal adalah sama sah dalam perwakilan JSON.

Atas ialah kandungan terperinci Mengapa Beberapa Aksara Unikod Muncul sebagai Jujukan `u....` dalam 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