Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menyelesaikan Ralat \'Input is not proper UTF-8\' dalam simplexml_load_string PHP dengan XML?

Bagaimana untuk Menyelesaikan Ralat \'Input is not proper UTF-8\' dalam simplexml_load_string PHP dengan XML?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 07:13:02692semak imbas

How to Resolve

Mengendalikan Pengekodan UTF-8 Tidak Sah Semasa Memuatkan XML Menggunakan simplexml_load_string dalam PHP

Apabila memproses respons XML daripada sumber luaran, anda mungkin menghadapi ralat : "Input bukan UTF-8 yang betul, nyatakan pengekodan!" disebabkan oleh percanggahan antara pengekodan yang diisytiharkan dan kandungan sebenar.

Mengenal pasti Isu

Sahkan kandungan XML terhadap pengekodan yang diisytiharkan. Jika ia benar-benar bukan UTF-8, anda perlu mencari penyelesaian untuk pra-proses dan membetulkan ketidakserasian pengekodan.

Pilihan Pra-Pemprosesan

  • utf8_encode(): Gunakan fungsi ini untuk membetulkan isu ini, tetapi ia mungkin memperkenalkan mojibake jika XML mengandungi kedua-dua UTF-8 yang sah dan set aksara lain.
  • iconv() atau mbstring: Cuba untuk menukar rentetan daripada UTF-8 kepada UTF-8, mengabaikan aksara tidak sah.

Pengesahan dan Pembetulan Manual

Ini pendekatan memerlukan pengetahuan tentang UTF-8 dan rumit tetapi membenarkan pembetulan yang tepat.

Penyelesaian Separa

Untuk penyelesaian sementara, pertimbangkan untuk menggunakan fungsi yang disediakan di bawah untuk membetulkan beberapa daripada isu pengekodan:

<code class="php">function fix_latin1_mangled_with_utf8_maybe_hopefully_most_of_the_time($str)
{
    return preg_replace_callback('#[\xA1-\xFF](?![\x80-\xBF]{2,})#', 'utf8_encode_callback', $str);
}

function utf8_encode_callback($m)
{
    return utf8_encode($m[0]);
}</code>

Amalan Terbaik

Beritahu penyedia data tentang pengekodan yang tidak sah untuk meminta pembetulan kekal. Pengendalian pengekodan aksara yang betul memastikan kesalingoperasian dan menghalang tingkah laku yang tidak dijangka.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Input is not proper UTF-8\' dalam simplexml_load_string PHP dengan XML?. 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