Pengekodan dan Penyahkodan JSON dengan Aksara Unikod dalam PHP
Dalam PHP, berurusan dengan rentetan JSON yang mengandungi aksara unikod boleh menimbulkan cabaran. Artikel ini menangani isu yang biasa dihadapi semasa menyahkod dan mengekod rentetan sedemikian.
Menyahkod Aksara Unikod
Untuk menyahkod JSON dengan aksara unikod, anda mungkin menghadapi masalah jika aksara tersebut tidak dikodkan dengan betul. Spesifikasi JSON membenarkan mana-mana aksara unikod kecuali petikan berganda, garis miring ke belakang dan aksara kawalan. Walau bagaimanapun, aksara unikod tertentu mungkin tidak menyahkod dengan betul dalam Python atau bahasa pengaturcaraan lain.
Pengekodan Aksara Unikod
Apabila mengekodkan JSON dengan aksara unikod, hasilnya mungkin dikodkan dengan urutan unicode yang terlepas, yang sah mengikut spesifikasi JSON. Walau bagaimanapun, anda mungkin ingin mengekalkan aksara unicode asal dalam bentuk unescaped mereka.
Menggunakan unescaped_unicode Option
PHP 5.4 memperkenalkan pilihan JSON_UNESCAPED_UNICODE untuk json_encode(), yang menyediakan keupayaan untuk mengekod aksara unicode tanpa melepaskannya. Walau bagaimanapun, jika anda menggunakan PHP 5.3, pilihan ini tidak tersedia.
Penyelesaian Alternatif untuk PHP 5.3
Untuk PHP 5.3, anda boleh menggunakan berasaskan ungkapan biasa pendekatan untuk melepaskan diri daripada urutan unikod yang dikodkan. Salah satu cara untuk melakukannya ialah:
<code class="php">$pattern = '/"\\u([0-9a-fA-F]{4})"/'; $replaced = preg_replace($pattern, '"\u"', $encodedJson);</code>
Ungkapan biasa ini mencari jujukan unikod yang terlepas dalam bentuk "uXXXX" dan menggantikannya dengan aksara unikod yang tidak dilepaskan.
Contoh Kod
Untuk mengekod rentetan JSON dengan aksara unikod dan melepaskannya semasa penyahkodan, anda boleh menggunakan kod berikut:
<code class="php">$data = ['Tag' => 'Odómetro']; $encodedJson = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $decodedData = json_decode($encodedJson, true); print_r($decodedData); // Output: [Tag] => Odómetro</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengekod dan Menyahkod JSON dengan Aksara Unicode dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!