Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Aksara bercelaru muncul apabila data json ditukar kepada tatasusunan dalam php

Aksara bercelaru muncul apabila data json ditukar kepada tatasusunan dalam php

PHPz
PHPzasal
2023-05-11 09:20:36561semak imbas

Dalam pembangunan PHP, pemprosesan data JSON telah menjadi tugas biasa. Terutama apabila berinteraksi dengan bahagian hadapan atau menyambung dengan API pihak ketiga, JSON selalunya merupakan format data yang paling biasa.

Dalam proses menggunakan PHP untuk memproses data JSON, kadangkala data JSON ditukar kepada tatasusunan dan kelihatan bercelaru. Artikel ini akan meneroka sebab perkara ini dan cara membetulkannya.

1. Mengapakah watak bercelaru muncul?

Dalam PHP, menukar data JSON kepada tatasusunan melalui fungsi json_decode() ialah kaedah operasi biasa. Walau bagaimanapun, jika terdapat aksara Cina dalam data JSON, aksara Cina dalam tatasusunan yang ditukar mungkin bercelaru.

Ini kerana set aksara lalai yang digunakan oleh PHP ialah ISO-8859-1 dan bukannya UTF-8, jadi ia tidak dapat mengecam aksara Cina dengan betul dalam format pengekodan UTF-8, mengakibatkan aksara bercelaru.

2. Penyelesaian

1 Gunakan parameter kedua fungsi json_decode()

Selain menukar data JSON kepada tatasusunan, fungsi json_decode() juga boleh. Tambahkan parameter kedua untuk menentukan format pengekodan rentetan JSON.

Sebagai contoh, jika data JSON dikodkan UTF-8, ia boleh ditentukan melalui kod berikut:

$result = json_decode($json, true, JSON_UNESCAPED_UNICODE);

Antaranya, parameter ketiga JSON_UNESCAPED_UNICODE memberitahu PHP untuk tidak melarikan diri daripada aksara Cina, tetapi secara langsung Simpan pengekodan UTF-8 asal.

2. Tukar set aksara ISO-8859-1 kepada set aksara UTF-8

Penyelesaian lain ialah menukar set aksara ISO-8859-1 kepada set aksara UTF-8. Ini boleh dicapai dengan menggunakan fungsi iconv() atau fungsi mb_convert_encoding().

Sebagai contoh, menggunakan fungsi iconv() anda boleh menulis seperti ini:

$result = json_decode(iconv("ISO-8859-1", "UTF-8//IGNORE", $json), true);

Antaranya, parameter kedua "UTF-8//IGNORE" memberitahu fungsi iconv() untuk mengekod ISO-8859-1 Aksara ditukar kepada pengekodan UTF-8.

3. Tambahkan pernyataan format pengekodan terus ke fail PHP

Tambah kod berikut pada permulaan fail PHP:

header("Content-type:text/html;charset=utf-8");

Dengan cara ini anda boleh menentukan aksara set fail PHP sebagai pengekodan UTF -8 untuk memastikan aksara Cina boleh dikenali dengan betul.

Ringkasan:

Jika anda menghadapi aksara yang bercelaru semasa memproses data JSON dalam PHP, jangan panik Anda boleh menambah parameter kedua fungsi json_decode() atau menukar ISO-8859-. 1 ke dalam pengekodan UTF-8, atau tambahkan pengisytiharan set aksara pada permulaan fail PHP untuk menyelesaikan masalah.

Atas ialah kandungan terperinci Aksara bercelaru muncul apabila data json ditukar kepada tatasusunan 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