Ошибка чтения RSS: Ввод неверный UTF-8 при использовании simplexml_load_file () - PullRequest
0 голосов
/ 15 июля 2010

Я использую метод simplexml_load_file для разбора канала из внешнего источника.

Мой код похож на этот

$ rssFeed ['DAILYSTAR'] = 'http://www.thedailystar.net/latest/rss/rss.xml'; $ rssParser =simplexml_load_file ($ url);

Вывод выглядит следующим образом:

Предупреждение: simplexml_load_file () [function.simplexml-load-file]: http://www.thedailystar.net/latest/rss/rss.xml:12: Ошибка синтаксического анализатора: вводнеправильный UTF-8, укажите кодировку!Байты: 0x92 0x73 0x20 0x48 в C: \ xampp \ htdocs \ googlebd \ index.php в строке 39

В конечном итоге остановитесь с фатальной ошибкой.Основная проблема заключается в кодировке символов сайта ISO-8859-1, а не UTF-8.

Могу ли я прочитать это с помощью этого метода (SimpleXML API)?Если нет, то любой другой метод доступен?Я искал через Google, но не получил ответа.Каждый метод, который я применил, возвращает с этой ошибкой.

Спасибо, Рашед

Ответы [ 2 ]

0 голосов
/ 30 августа 2012

Мы столкнулись с той же проблемой и использовали utf8_encode , чтобы изменить кодировку с ISO-8859-1 / latin-1 на UTF-8 и устранить ошибку.

$contents = file_get_contents($url);
simplexml_load_string(utf8_encode($contents));
0 голосов
/ 15 июля 2010

Хорошо, хорошо, когда я получаю это содержимое с помощью Python, я получаю следующее:

'\n<rss version="2.0" encoding="ISO-8859-1">\n [...]
<description>The results of this year\x92s Higher Secondary Certificate 

Теперь он говорит , что это ISO-8859-1, но \ x92 не входит в этот набор символов, а вместо этого представляет собой заключительную фигурную одинарную кавычку, используемую как апостроф, в Windows-1252. Таким образом, страница выдает ошибку кодирования, и согласно спецификации XML клиенты должны быть «строгими» и не исправлять ошибки.

Вы можете извлечь его и отфильтровать символы, отличные от ISO-8859-1, или, что лучше, преобразовать кодировку, используя mb-convert-encoding(), прежде чем передавать результат в свой парсер RSS.

О, и если вы хотите включить результат в страницу UTF-8, возможно, вам пришлось преобразовать все в UTF-8, хотя это английский язык, который может даже не требовать каких-либо других кодировок символов, если все получается быть ASCII в конце концов.

...