Bagaimana untuk Menyelesaikan \'Input tidak sesuai UTF-8, tunjukkan pengekodan !\' Ralat Menggunakan PHP SimpleXML?

Patricia Arquette
Lepaskan: 2024-10-24 07:01:30
asal
120 orang telah melayarinya

How to Resolve

Mengendalikan Ralat Pengekodan dengan SimpleXML

"Input bukan UTF-8 yang betul, tunjukkan pengekodan !" ralat timbul semasa memproses data XML menggunakan fungsi simplexml_load_string PHP. Ini menunjukkan bahawa kandungan XML tidak dikodkan dengan betul dalam UTF-8.

Mengesan Pengekodan Salah

Punca ralat ini mungkin adalah ketidakpadanan pengekodan antara XML kandungan dan persekitaran PHP. Untuk menentukan pengekodan yang betul:

  • Periksa Jenis Kandungan: Cari pengisytiharan XML dengan atribut pengekodan, cth., .
  • Analisis Kandungan: Periksa kandungan XML untuk aksara bukan UTF-8, seperti aksen atau aksara khas daripada bahasa bukan Inggeris.

Pra-Memproses XML

Untuk menyelesaikan isu ini, pertimbangkan kaedah berikut:

  • Beritahu Pembekal Data : Maklumkan ralat pengekodan kepada sumber pihak ketiga supaya mereka boleh membetulkannya.
  • Gunakan Fungsi Keserasian: Gunakan iconv() atau mb_convert_encoding() buat sementara waktu untuk menukar XML daripada pengekodan yang diandaikan salah kepada UTF-8.
  • Buat Pembetulan Pengekodan Tersuai: Bangunkan fungsi tersuai atau ungkapan regex untuk mengesan dan membetulkan isu pengekodan.

Pembetulan Separa Menggunakan Panggilan Balik

Sebagai langkah sementara, anda boleh menggunakan fungsi berikut untuk membaiki beberapa jujukan UTF-8 yang rosak:

<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

Penyelesaian Kekal

Pendekatan terbaik ialah membetulkan pengekodan pada sumber. Sampaikan isu ini kepada pembekal data dan minta mereka mengekod kandungan XML dalam UTF-8 yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'Input tidak sesuai UTF-8, tunjukkan pengekodan !\' Ralat Menggunakan PHP SimpleXML?. 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!