Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `json_encode` Mengembalikan Rentetan Kosong dan Bagaimana Saya Boleh Membetulkan Isu Pengekodan UTF-8?

Mengapakah `json_encode` Mengembalikan Rentetan Kosong dan Bagaimana Saya Boleh Membetulkan Isu Pengekodan UTF-8?

DDD
DDDasal
2024-12-03 19:25:14857semak imbas

Why Does `json_encode` Return an Empty String, and How Can I Fix UTF-8 Encoding Issues?

Pengekodan JSON dan Isu Aksara UTF-8

Menghadapi pemulangan rentetan kosong daripada json_encode mungkin menunjukkan masalah dengan pengekodan aksara UTF-8. Ini amat ketara jika mb_detect_encoding mengembalikan ASCII manakala json_encode gagal.

Penyelesaian:

Selepas penyiasatan menyeluruh, punca isu dikenal pasti sebagai pengekodan UTF-8 yang tidak betul . Untuk menyelesaikan masalah ini, anda boleh menggunakan fungsi rekursif berikut:

function utf8ize($d) {
    if (is_array($d)) {
        foreach ($d as $k => $v) {
            $d[$k] = utf8ize($v);
        }
    } else if (is_string ($d)) {
        return utf8_encode($d);
    }
    return $d;
}

Fungsi ini berulang melalui tatasusunan, menukar semua rentetan kepada UTF-8 menggunakan utf8_encode. Dengan menggunakan json_encode pada output utf8ize, anda boleh memastikan bahawa semua aksara dikodkan dengan betul untuk siri JSON.

Nota: utf8_encode menganggap input adalah dalam pengekodan ISO-8859-1. Jika pengekodan tidak pasti, pertimbangkan untuk menggunakan iconv atau mb_convert_encoding untuk mekanisme penukaran yang lebih mantap.

Atas ialah kandungan terperinci Mengapakah `json_encode` Mengembalikan Rentetan Kosong dan Bagaimana Saya Boleh Membetulkan Isu Pengekodan UTF-8?. 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