Tukar objek php kepada kod kacau Cina json

PHPz
Lepaskan: 2023-05-22 21:36:06
asal
588 orang telah melayarinya

Apabila melakukan pembangunan web, JSON selalunya digunakan untuk menukar objek kepada JSON data dan menghantarnya secara tak segerak melalui AJAX. Walau bagaimanapun, apabila menggunakan bahagian belakang PHP untuk JSON output berformat, anda mungkin menghadapi aksara Cina yang bercelaru selepas objek ditukar kepada format JSON. Artikel ini menerangkan cara menyelesaikan masalah ini.

Penerangan Masalah

Dalam kod PHP, kami menggunakan fungsi json_encode() untuk menukar objek kepada rentetan dalam format JSON, dan kemudian mengeluarkannya melalui echo. Walau bagaimanapun, apabila JSON mengandungi aksara Cina, aksara bercelaru akan muncul, seperti yang ditunjukkan dalam rajah berikut:

Tukar objek php kepada kod kacau Cina json

Aksara Cina yang jelas ditukar kepada aksara yang bercelaru, yang sangat berbahaya kepada pengguna dan pembangun semuanya tidak mesra. Seterusnya, kami akan memperkenalkan tiga penyelesaian.

Penyelesaian

Kaedah 1: Mengekodkan bahasa Cina secara manual

Tambah json_encode() sebelum fungsi json_encode()->mb_convert_encoding() untuk mengekod bahasa Cina secara manual ke dalam utf-8.

Kod sampel adalah seperti berikut:

<?php
$arr = [
    'name' => '张三',
    'age' => 18,
    'gender' => '男'
];
echo mb_convert_encoding(json_encode($arr, JSON_UNESCAPED_UNICODE), 'UTF-8');
?>
Salin selepas log masuk

Selepas menambah sekeping kod ini, bahasa Cina dalam rentetan output akan ditukar dengan betul kepada pengekodan utf-8 dan bukannya aksara yang bercelaru.

Kaedah 2: Tetapkan parameter json_encode()

Tambah parameter json_encode() dalam fungsi JSON_UNESCAPED_UNICODE, beritahu fungsi json_encode() untuk tidak mengekod bahasa Cina ke dalam Unikod dan hanya jaga orang cina.

Kod sampel adalah seperti berikut:

<?php
$arr = [
    'name' => '张三',
    'age' => 18,
    'gender' => '男'
];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>
Salin selepas log masuk

Selepas menambah parameter ini, bahasa Cina dalam output JSON akan dikeluarkan dengan betul dan bukannya aksara yang kacau.

Kaedah 3: Ubah suai tetapan teras PHP

Dalam tetapan teras PHP, terdapat parameter default_charset, yang menunjukkan pengekodan aksara lalai yang digunakan semasa mengeluarkan beberapa teks. Jika parameter ini ditetapkan kepada UTF-8, bahasa Cina akan dikodkan dengan betul apabila mengeluarkan JSON.

Kod sampel adalah seperti berikut:

<?php
ini_set('default_charset', 'utf-8');
$arr = [
    'name' => '张三',
    'age' => 18,
    'gender' => '男'
];
echo json_encode($arr);
?>
Salin selepas log masuk

Letakkan kod ini dalam skrip yang perlu mengeluarkan JSON untuk memastikan bahasa Cina dalam JSON tidak akan kacau.

Kesimpulan

Apabila melakukan pembangunan web, adalah perkara biasa untuk menggunakan format JSON untuk penghantaran data. Dalam PHP, apabila menggunakan fungsi json_encode() untuk menyerikan objek menjadi rentetan dalam format JSON, aksara Cina yang kacau-bilau mungkin muncul. Artikel ini memperkenalkan tiga penyelesaian: pengekodan bahasa Cina secara manual, menetapkan parameter json_encode() dan mengubah suai parameter default_charset dalam tetapan teras PHP. Kaedah ini boleh menyelesaikan masalah aksara Cina JSON yang kacau dengan berkesan, dan penggunaan khusus boleh dipilih mengikut situasi sebenar.

Atas ialah kandungan terperinci Tukar objek php kepada kod kacau Cina json. 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!