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

Barbara Streisand
Lepaskan: 2024-11-03 23:22:30
asal
865 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!