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

Mary-Kate Olsen
Lepaskan: 2024-10-24 07:13:02
asal
622 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php
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!