xml_parser - problem with char encoding

xml_parser - problem with char encoding

Posted by: Minas
Posted on: 2007-10-16 14:03:00

Hello everyone!

I have a problem with some code that runs differently on PHP5..

I get an external XML feed and parse it in a page..

This feed contains Greek characters and uses ISO-8859-7 encoding..

The same goes for my page..

The code I am using to read the feed is :

$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);

$p = xml_parser_create();
xml_parse_into_struct($p, $data, $vals, $index);
xml_parser_free($p);


This works perfectly in PHP 4 but in 5, even all the page is in ISO-8859-7 encoding the data taken from XML url are in UTF-8 (if I change the encoding on the browser to UTF-8 the Greek strings from are displayed correctly but all the rest page is garbage)..

The URL for the XML feed is:

http://www.mpgreek.com/affiliates/rss_affiliate.asp?ID=TOP10&affid=100161

and two examples of the output are:

http://hotstationgr.dreamhosters.com/top_mp3_downloads.html
and
http://hotstation.gr/top_mp3_downloads.html

They run the same file but the first server has PHP4 and the 2nd PHP5..

I tried several functions like utf8_encode / utf8_decode / declairing encoding on xml_parser but with no luck..

Any ideas?

Thanks,

Minas

Tags: xml parserxml parsexml feedutf 8timeoutiso 8859url urlphp5php 4initgarbageexec