Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengekodkan JSON dalam UTF-8 Tanpa Melarikan Diri Aksara Unikod dalam PHP?

Bagaimana untuk Mengekodkan JSON dalam UTF-8 Tanpa Melarikan Diri Aksara Unikod dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 03:42:30241semak imbas

How to Encode JSON in UTF-8 Without Escaping Unicode Characters in PHP?

Cara Mengekod JSON dalam UTF-8 Tanpa Melarikan Diri Aksara Unikod

Dalam PHP, fungsi json_encode() menukar nilai kepada rentetan JSON dengan lalai, bagaimanapun, ia melepaskan aksara Unicode ke dalam perwakilan titik kod Unicode mereka. Ini boleh menjadi tidak diingini dalam senario tertentu di mana output memerlukan pengekodan UTF-8 dan bukannya pengekodan Unikod.

Pertimbangkan contoh berikut:

<code class="php">$arr = ['a' => 'á'];
echo json_encode($arr);</code>

Output yang dijangkakan ialah "a": "á ", tetapi keputusan sebenar ialah {"a":"u00e1"}. Ini kerana fungsi json_encode() telah mengekodkan aksara 'á' ke dalam perwakilan titik kod Unikodnya, iaitu "u00e1".

Penyelesaian:

Semasa di sana tiada pilihan terbina dalam dalam versi PHP sebelum 5.4 untuk melumpuhkan Unicode melarikan diri dalam json_encode(), terdapat beberapa penyelesaian untuk mencapai ini:

  1. Gulung Pengekod JSON Anda Sendiri: Buat pengekod JSON tersuai yang tidak mengekod aksara bukan ASCII.
  2. Gunakan Pengekod JSON Pear: Gunakan pengekod JSON Pear dan alih keluar baris 349 hingga 433, yang bertanggungjawab untuk melarikan diri Unikod .
  3. Gunakan PHP 5.4 : Dalam PHP 5.4 dan versi yang lebih baru, fungsi json_encode() menyediakan pilihan JSON_UNESCAPED_UNICODE yang membenarkan output biasa tanpa Unicode melarikan diri. Berikut ialah contoh menggunakan pilihan ini:
<code class="php"><?php
header('Content-Type: application/json');
$arr = ['a' => 'á'];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?></code>

Ini akan mengeluarkan rentetan JSON yang diingini: "a": "á".

Atas ialah kandungan terperinci Bagaimana untuk Mengekodkan JSON dalam UTF-8 Tanpa Melarikan Diri Aksara Unikod dalam 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