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!