Xml_parser - problem with char encoding

software development

#1

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