Rumah > Artikel > pangkalan data > Mengapa json_encode() Gagal Mengekodkan Aksara Beraksen Daripada Pangkalan Data MySQL dengan Pengekodan Latin1?
Apabila cuba mendapatkan semula aksara beraksen daripada pangkalan data dengan pengekodan latin1_swedish_ci dan mengekodnya ke dalam JSON menggunakan json_encode(), hasilnya mungkin tidak dijangka. Hasil yang dimaksudkan, seperti "Abord â Plouffe," diubah menjadi "null", menjadikan JSON yang dikodkan tidak sah.
Untuk menyelesaikan isu ini, adalah perlu untuk mengekodkan nilai yang diambil ke dalam UTF-8 secara eksplisit sebelum menggunakan json_encode(). Ini memastikan bahawa output JSON mengandungi aksara UTF-8 yang betul dan mengesahkan dengan sewajarnya. Berikut ialah cara untuk melaksanakan penyelesaian ini:
<code class="php">// Initialize an empty array for the encoded result set $rows = array(); // Iterate over the PHPMyAdmin result set while ($row = mysql_fetch_assoc($result)) { // Apply UTF-8 encoding to each row value $rows[] = array_map('utf8_encode', $row); } // Output the encoded $rows echo json_encode($rows);</code>
Dalam kod yang diubah suai ini, kami menggunakan fungsi array_map untuk menggunakan utf8_encode pada setiap elemen setiap baris dalam set hasil. Ini memastikan bahawa semua aksara dikodkan dengan betul ke dalam UTF-8 sebelum json_encode dilaksanakan. Akibatnya, output JSON yang terhasil akan mencerminkan aksara yang dimaksudkan dengan tepat, mengekalkan aksara beraksen seperti yang dikehendaki.
Atas ialah kandungan terperinci Mengapa json_encode() Gagal Mengekodkan Aksara Beraksen Daripada Pangkalan Data MySQL dengan Pengekodan Latin1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!