Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyahkod dan Mengekodkan JSON dengan Aksara Unicode dalam PHP?

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

Linda Hamilton
Linda Hamiltonasal
2024-10-31 13:18:30432semak imbas

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);

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!

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