Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menukar format JSON dengan aksara Cina ke dalam tatasusunan dalam PHP
PHP ialah bahasa pengaturcaraan sebelah pelayan yang popular digunakan untuk membina aplikasi web. JSON (JavaScript Object Notation) ialah format pertukaran data yang ringan. Ia adalah format teks yang mudah difahami oleh manusia dan diproses oleh mesin. PHP mempunyai fungsi terbina dalam untuk memproses data JSON dan menyediakan fungsi untuk menukar format JSON kepada tatasusunan PHP. Walau bagaimanapun, apabila data JSON mengandungi aksara Cina, aksara bercelaru akan muncul. Dalam artikel ini, kami akan memperkenalkan cara menukar format JSON dengan aksara Cina ke dalam tatasusunan PHP dan menyelesaikan masalah bercelaru.
Format JSON ialah format pertukaran data ringan yang berdasarkan sintaks bahasa JavaScript, tetapi juga boleh digunakan dengan bahasa pengaturcaraan lain . JSON terdiri daripada pasangan nilai kunci, setiap pasangan nilai kunci dipisahkan dengan koma dan kunci dan nilai dipisahkan dengan titik bertindih. Kedua-dua tatasusunan dan objek boleh digunakan dalam JSON. Berikut ialah contoh format JSON:
{ "name": "张三", "age": 25, "gender": "男", "hobbies": ["游泳", "唱歌", "阅读"], "address": { "province": "广东", "city": "深圳" } }
Kita boleh menggunakan fungsi json_decode PHP untuk menukar format JSON kepada tatasusunan PHP. Sintaksnya adalah seperti berikut:
mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
Antaranya, parameter $json ialah rentetan dalam format JSON dan $assoc ialah parameter pilihan Apabila nilainya TRUE, tatasusunan bersekutu akan dikembalikan, jika tidak objek akan dikembalikan. $depth ialah parameter pilihan yang menentukan kedalaman rekursi maksimum, yang lalai kepada 512. $options juga merupakan parameter pilihan, menentukan pilihan penyahkodan JSON Lalai ialah 0.
Berikut ialah contoh menukar format JSON kepada tatasusunan PHP:
$json = '{"name": "张三", "age": 25, "gender": "男"}'; $arr = json_decode($json, true); print_r($arr);
Hasil output adalah seperti berikut:
Array ( [name] => 张三 [age] => 25 [gender] => 男 )
Walau bagaimanapun, apabila data JSON mengandungi aksara Cina, aksara bercelaru akan muncul. Ini kerana PHP mengekodkan JSON ke dalam format UTF-8 secara lalai, dan aksara Cina menduduki 3 bait dalam UTF-8. Oleh itu, jika data JSON kami mengandungi aksara Cina, ia perlu diproses semasa proses penukaran.
Dalam PHP, kita boleh menggunakan fungsi iconv untuk menukar set aksara yang berbeza. Sintaks fungsi iconv adalah seperti berikut:
string iconv ( string $in_charset , string $out_charset , string $str )
Antaranya, parameter $in_charset ialah set aksara sumber, parameter $out_charset ialah set aksara sasaran dan parameter $str ialah rentetan untuk ditukar. Berikut ialah contoh menukar format JSON kepada tatasusunan PHP dan menyelesaikan masalah bercelaru:
$json = '{"name": "张三", "age": 25, "gender": "男"}'; $json = iconv('UTF-8', 'GBK//IGNORE', $json); // 将JSON转换为GBK格式 $arr = json_decode($json, true); $arr = array_map(function($value) { return iconv('GBK', 'UTF-8//IGNORE', $value); // 将数组转换为UTF-8格式 }, $arr); print_r($arr);
Hasil output adalah seperti berikut:
Array ( [name] => 张三 [age] => 25 [gender] => 男 )
Dalam contoh di atas, kami mula-mula gunakan fungsi iconv Tukar rentetan berformat JSON daripada format UTF-8 kepada format GBK. Kemudian, gunakan fungsi json_decode untuk menukar format JSON kepada tatasusunan PHP. Akhir sekali, kami menggunakan fungsi array_map untuk menukar setiap nilai dalam tatasusunan daripada format GBK kepada format UTF-8.
Selain menggunakan fungsi iconv, kita juga boleh menggunakan fungsi mb_convert_encoding untuk menukar pengekodan aksara. Fungsi mb_convert_encoding adalah serupa dengan fungsi iconv, kecuali parameternya berbeza sedikit. Berikut ialah contoh penukaran pengekodan aksara menggunakan fungsi mb_convert_encoding:
$json = '{"name": "张三", "age": 25, "gender": "男"}'; $json = mb_convert_encoding($json, 'GBK', 'UTF-8'); // 将JSON转换为GBK格式 $arr = json_decode($json, true); $arr = array_map(function($value) { return mb_convert_encoding($value, 'UTF-8', 'GBK'); // 将数组转换为UTF-8格式 }, $arr); print_r($arr);
Output adalah sama seperti contoh sebelumnya.
Dalam PHP, kita boleh menggunakan fungsi json_decode untuk menukar format JSON kepada tatasusunan PHP. Walau bagaimanapun, apabila data JSON mengandungi aksara Cina, aksara bercelaru akan muncul. Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi iconv atau fungsi mb_convert_encoding untuk menukar format JSON kepada set aksara yang ditentukan dan kemudian menukarnya kepada tatasusunan PHP. Dengan cara ini, kami boleh mengendalikan format JSON dengan aksara Cina dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk menukar format JSON dengan aksara Cina ke dalam tatasusunan dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!