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
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!