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!