Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `json_encode()` Gagal dengan Kod Benua Tertentu dalam PHP?

Mengapakah `json_encode()` Gagal dengan Kod Benua Tertentu dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-11-03 23:22:30973semak imbas

Why Does `json_encode()` Fail with Specific Continent Codes in PHP?

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:

  • Kod mengekod data dengan betul untuk kod benua 'AS'.
  • Kod benua 'EU', 'NA', 'AF' dan lain-lain tidak menghasilkan JSON output.

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:

  • Menetapkan sambungan pangkalan data untuk menggunakan UTF-8 (cth., mysqli_set_charset($con, 'UTF-8'))
  • Mengisytiharkan pengepala untuk respons JSON ( header('Content-Type: application/json; charset=utf-8');)
  • Mensahkan bahawa fail PHP dan pangkalan data menggunakan pengekodan UTF-8 (cth., melalui pengekodan fail atau konfigurasi pangkalan data)

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!

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