Cara Mengembalikan PHP json_encode dengan Pengekodan UTF-8 Daripada Unicode
Apabila menggunakan fungsi json_encode PHP, secara lalai, aksara bukan ASCII dikodkan dalam format Unicode. Ini menghasilkan tindak balas JSON dengan jujukan melarikan diri seperti "u00e1" dan bukannya aksara yang dikodkan UTF-8 seperti "á".
Ambil contoh ini:
<code class="php">$arr = array('a' => 'á'); echo json_encode($arr);</code>
Outputnya ialah:
<code class="json">{"a":"\u00e1"}</code>
Untuk menyelesaikan isu ini dan mengembalikan respons JSON dengan aksara yang dikodkan UTF-8, anda boleh menggunakan pendekatan berikut:
PHP 5.4 :
Dari PHP 5.4 dan seterusnya, json_encode menyediakan pilihan JSON_UNESCAPED_UNICODE. Dengan menetapkan pilihan ini, aksara bukan ASCII akan dikodkan UTF-8 biasa tanpa urutan melarikan diri.
<code class="php">echo json_encode($arr, JSON_UNESCAPED_UNICODE);</code>
Versi PHP Lama:
Untuk versi sebelum PHP 5.4, anda boleh melaksanakan pengekod JSON anda sendiri yang mengetepikan pengekodan aksara bukan ASCII. Sebagai alternatif, anda boleh menggunakan pengekod JSON Pear dan mengalih keluar baris 349 hingga 433 daripada fungsi pengekodan.
Sila ambil perhatian bahawa perbezaan antara {"a":"u00e1"} dan {"a":"á"} adalah semata-mata bagaimana ia ditulis dalam sintaks JSON. Kedua-dua perwakilan akan dinyahkodkan kepada nilai Unikod yang sama oleh penyahkod JSON.
Atas ialah kandungan terperinci Bagaimana untuk Mengekodkan Aksara Bukan ASCII dalam JSON dengan UTF-8 Menggunakan `json_encode` PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!