Sizin 0xED 0x6E 0x2C 0x20 byte karşılık "olarak," ISO-8859-1, böylece içerik, ISO-8859-1 UTF-8 değil gibi görünüyor. Bu konuda bir veri sağlayıcı söyleyin ve sizin için işe yaramazsa muhtemelen ya diğer insanlar için çalışmaz, çünkü, bunu düzeltmek için onlara sormak.
Şimdi yalnızca kullanmalısınız etrafında çalışmak için birkaç yolu vardır if you cannot load the XML normally . One of them would be to use utf8_encode()
. Dezavantajı XML geçerli UTF-8 ve bazı ISO-8859-1 hem de içeriyorsa o zaman sonuç içerecek olmasıdır mojibake. Yoksa iconv()
veya mbstring'i kullanarak UTF-8 UTF-8 dize dönüştürmek için çalışın, ve onlar sizin için bunu düzeltmek olacak umut olabilir. (Onlar değil, ama en azından sizin XML yükleyebilirsiniz böylece geçersiz karakterler göz ardı edebilirsiniz)
Yoksa, uzun yol almak ve doğrulamak / kendiniz dizileri düzeltebilirsiniz. Yani UTF-8 ile ne kadar aşina bağlı olarak bir süre alacaktır. Ben hiç bilmiyorum ancak belki de yapardı orada kütüphaneler vardır.
Her iki şekilde de, onlar bunu düzeltmek böylece onlar geçersiz veri gönderirken veri sağlayıcısı bildirir.
Burada kısmi bir düzeltme bulunuyor. Kesinlikle her şeyi çözmek değil, ama bunun bazı çözecektir. Sağlayıcınız eşyalarını tamir edene kadar sizin tarafınızdan almak için umarım yeterli.
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]);
}