Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengekodkan Aksara Bukan ASCII dalam JSON dengan UTF-8 Menggunakan `json_encode` PHP?

Bagaimana untuk Mengekodkan Aksara Bukan ASCII dalam JSON dengan UTF-8 Menggunakan `json_encode` PHP?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 00:15:02149semak imbas

How to Encode Non-ASCII Characters in JSON with UTF-8 Using PHP's `json_encode`?

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!

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