Rumah  >  Artikel  >  pangkalan data  >  Mengapa json_encode() Kadang-kadang Kehilangan Aksara UTF-8 Apabila Pengekodan Baris Pangkalan Data dalam PHP?

Mengapa json_encode() Kadang-kadang Kehilangan Aksara UTF-8 Apabila Pengekodan Baris Pangkalan Data dalam PHP?

DDD
DDDasal
2024-10-30 20:56:30571semak imbas

Why Does json_encode() Sometimes Lose UTF-8 Characters When Encoding Database Rows in PHP?

Isu Pengekodan Aksara UTF-8 dengan json_encode()

Dalam PHP, pengendalian pengekodan aksara UTF-8 boleh menjadi mencabar, terutamanya apabila bekerja dengan pangkalan data dan pengekodan JSON. Satu isu biasa timbul apabila cuba mengekod JSON tatasusunan yang mengandungi baris pangkalan data yang mempunyai aksara beraksen. Walaupun dokumentasi yang mendakwa json_encode() menyokong UTF-8, sesetengah aksara mungkin hilang atau muncul sebagai nilai nol semasa proses pengekodan.

Untuk menyelesaikan isu ini, pendekatan alternatif diperlukan. Daripada mengekodkan tatasusunan baris secara langsung, buat tatasusunan kosong dan isikannya dengan nilai yang dikodkan baris demi baris. Berikut ialah contoh:

<code class="php">// Create an empty array for the encoded resultset
$rows = array();

// Loop over the db resultset and put encoded values into $rows
while($row = mysql_fetch_assoc($result)) {
  $rows[] = array_map('utf8_encode', $row);
}

// Output $rows
echo json_encode($rows);</code>

Dalam kod yang dikemas kini ini:

  1. Susun tatasusunan kosong ($baris) dimulakan untuk memegang set hasil yang dikodkan.
  2. The baris diulang dan setiap baris dilalui melalui array_map() untuk mengekod nilai individunya.
  3. Nilai yang dikodkan disimpan dalam tatasusunan $rows.
  4. Akhir sekali, tatasusunan $rows yang dikodkan ialah Dikodkan dan dikeluarkan JSON.

Pendekatan ini memastikan semua aksara UTF-8 dikodkan dengan betul sebelum pengekodan JSON terakhir, menyelesaikan isu di mana beberapa aksara telah hilang atau muncul sebagai batal dalam kod asal .

Atas ialah kandungan terperinci Mengapa json_encode() Kadang-kadang Kehilangan Aksara UTF-8 Apabila Pengekodan Baris Pangkalan Data 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