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

DDD
Lepaskan: 2024-10-30 20:56:30
asal
570 orang telah melayarinya

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

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!

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
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!