Penyahkodan Aksara Unikod Istimewa JSON: Penjelasan
Dalam bidang pengekodan JSON, aksara Unikod "istimewa" kadangkala boleh kelihatan dikodkan secara ganjil . Artikel ini bertujuan untuk menjelaskan isu biasa ini dan meneroka sebab asas.
Mengapa fenomena ini berlaku?
Piawaian JSON membenarkan aksara khas dikodkan dalam pelbagai cara, termasuk urutan pelarian heksadesimal . Apabila menggunakan json_encode untuk mengekod aksara Unicode, ia selalunya memilih urutan pelarian ini. Sebagai contoh, aksara Cina "馬" akan keluar sebagai "u99ac" dalam JSON yang dikodkan.
Tingkah laku ini bukan ralat; sebaliknya, ia mengikut sintaks JSON yang digariskan dalam standard ECMAScript. Dalam Javascript, literal rentetan boleh ditulis menggunakan jujukan pelarian heksadesimal untuk mewakili mana-mana aksara, termasuk aksara daripada pasangan pengganti UTF-16.
Menggunakan titik kod Unicode, mana-mana aksara boleh dikodkan sebagai "u... ". Notasi ini sama sepenuhnya dengan aksara literal itu sendiri, kerana kedua-duanya akan ditafsirkan sebagai entiti yang sama oleh penghurai JSON.
Walau bagaimanapun, seseorang boleh mengkonfigurasi json_encode untuk memilih pengekodan aksara literal dengan menetapkan bendera JSON_UNESCAPED_UNICODE semasa pengekodan. Ini akan menjadikan hasil lebih mudah dibaca manusia tetapi tidak mengubah maksud asas data.
Kesimpulannya, pengekodan aksara Unicode yang kelihatan "pelik" dalam JSON menggunakan json_encode bukanlah masalah pengekodan yang salah. Ia adalah kaedah yang sangat sah yang mematuhi piawaian JSON. Jika dikehendaki, pengekodan aksara literal boleh didayakan menggunakan bendera JSON_UNESCAPED_UNICODE.
Atas ialah kandungan terperinci Mengapa Beberapa Aksara Unikod dalam JSON Dikodkan sebagai Urutan Melarikan Diri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!