Isu Pengekodan JSON dengan Tatasusunan PHP
Soalan:
Saya menggunakan json_encode( PHP ) berfungsi untuk menukar data jadual MySQL kepada JSON, tetapi saya menghadapi tingkah laku yang pelik. Fungsi ini tidak mengekod data untuk pertanyaan tertentu, khususnya yang mengandungi aksara khas atau kod benua tertentu.
Coretan Kod:
<code class="php">$result = mysqli_query($con, "SELECT * FROM countries WHERE continent_code='EU'") or die(mysqli_error($con)); while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $orders[] = array( 'CountryCode' => $row['code'], 'CountryName' => $row['name'] ); } echo json_encode($orders);</code>
Pemerhatian:
Masalah:
Fungsi json_encode() memerlukan semua data masuk dikodkan UTF-8. Aksara khas dan kod benua tertentu mungkin tidak dikodkan dengan betul dalam pangkalan data atau semasa manipulasi data.
Penyelesaian:
Pastikan pengekodan UTF-8 sepanjang aplikasi web anda. Ini termasuk:
Seperti yang dinyatakan oleh RFC4627: "Teks JSON AKAN dikodkan dalam Unicode. Pengekodan lalai ialah UTF-8." Dengan memastikan pengekodan UTF-8, json_encode() akan dapat memproses semua data dengan betul, tanpa mengira kandungannya.
Atas ialah kandungan terperinci Mengapakah `json_encode()` Gagal dengan Kod Benua Tertentu dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!