Bagaimana untuk Menyahkod dan Mengekodkan JSON dengan Aksara Unicode dalam PHP?

Linda Hamilton
Lepaskan: 2024-10-31 13:18:30
asal
431 orang telah melayarinya

How to Decode and Encode JSON with Unicode Characters in PHP?

Penyahkodan PHP dan Pengekodan JSON dengan Aksara Unikod

Isu Penyahkodan Aksara Unikod

Apabila mencuba untuk menyahkod JSON yang mengandungi aksara unikod, anda mungkin menghadapi masalah jika aksara itu berada dalam had tertentu. Khususnya, aksara seperti "" dan "" dilarang daripada muncul dalam rentetan JSON. Selain itu, aksara kawalan tidak dibenarkan.

Pengekodan dan Penyahkodan UTF-8

Untuk menangani perkara ini, anda boleh menggunakan utf8_encode untuk membenarkan rentetan dinyahkod dengan json_decode. Walau bagaimanapun, ini boleh mengakibatkan watak-watak menjadi hancur. Contohnya, "Odómetro" akan ditukarkan kepada "Odómetro".

Pengekodan Semula dan Melarikan Diri Aksara

Setelah mengekod semula tatasusunan, watak itu terlepas ke ASCII, yang betul mengikut spesifikasi JSON: "Tag"=>"Odu00f3metro". Untuk melepaskan watak, anda boleh menggunakan pilihan JSON_UNESCAPED_UNICODE untuk `json_encode. Walau bagaimanapun, ini hanya tersedia dalam PHP 5.4 atau lebih baru.

Penyelesaian Alternatif Menggunakan Regex

Jika anda terhad kepada PHP 5.3, anda boleh menggunakan berasaskan regex penyelesaian:

$json = json_encode($array, JSON_UNESCAPED_SLASHES);

// Replace escaped unicode characters with their UTF-8 equivalents
$json = preg_replace('/\\u([0-9a-fA-F]{4})/', '&#x;', $json);
Salin selepas log masuk

Dengan menggunakan bendera JSON_UNESCAPED_SLASHES, anda menghalang garis miring () daripada terlepas dalam rentetan JSON. Corak regex kemudiannya sepadan dengan aksara unikod yang terlepas (u####) dan menggantikannya dengan setara UTF-8.

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod dan Mengekodkan JSON dengan Aksara Unicode 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
Artikel terbaru oleh pengarang
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!