Rumah > Artikel > pembangunan bahagian belakang > Mengapakah `json_encode` Menukar UTF-8 kepada Entiti Heksadesimal dalam PHP?
UTF-8 kepada Penukaran Entiti Heksadesimal dalam json_encode PHP: Menyelidiki Tingkah Laku dan Penyelesaian
Dalam aplikasi PHP yang mengendalikan data berbilang bahasa, Fungsi json_encode sering menimbulkan cabaran yang membingungkan. Apabila aksara Unicode ditemui, ia secara automatik ditukar kepada entiti perenambelasan, mengganggu output Unicode yang dikehendaki.
Penjelasan:
Tingkah laku ini berpunca daripada mekanisme pengekodan lalai json_encode . Ia menggunakan JSON, yang menjangkakan aksara Unicode diwakili sebagai entiti perenambelasan untuk memastikan keserasian merentas sistem dan penyemak imbas yang berbeza. Walau bagaimanapun, penukaran ini boleh menjadi tidak diingini apabila berurusan dengan senario tertentu.
Penyelesaian:
Untuk mengatasi gelagat ini, penyelesaian terletak dalam pilihan yang baru diperkenalkan dalam PHP 5.4. 0, JSON_UNESCAPED_UNICODE. Pilihan ini mengarahkan json_encode untuk membiarkan aksara Unicode utuh tanpa menukarnya kepada entiti perenambelasan. Dengan menggunakan pilihan ini, aksara UTF-8 yang dijangkakan boleh dikekalkan:
json_encode($text, JSON_UNESCAPED_UNICODE);
Pendekatan ini membenarkan input dan output berikut:
INPUT echo $text; OUTPUT База данни грешка.
INPUT json_encode($text, JSON_UNESCAPED_UNICODE); OUTPUT База данни грешка.
Dengan teknik ini, kerumitan penukaran Unicode dalam fungsi json_encode PHP boleh diselesaikan dengan berkesan, memastikan pengekalan output Unicode yang diingini.
Atas ialah kandungan terperinci Mengapakah `json_encode` Menukar UTF-8 kepada Entiti Heksadesimal dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!