ID:               46129
 User updated by:  brett at brettbrewer dot com
 Reported By:      brett at brettbrewer dot com
 Status:           Bogus
 Bug Type:         SimpleXML related
 Operating System: Linux xq41.cyberlnc.com 2.6.18-5
 PHP Version:      5.2.6
 New Comment:

This morning after your reply, I did discover a second duplicate meta
declaration below the first (which was incorrectly set to ISO-8859-1),
but it has since been removed and there is no difference in the behavior
of the page. I now see nowhere in my HTML where there is any reference 
to ISO-8859-1. There is a UTF-8 meta declaration at the top of the page.
I'm now wondering if this might actually be due to Apache HTTP headers
overriding the encoding declared in the HTML file because when I watch
the headers via HTTPLiveHeaders Apache is sending ISO-8859-1 as the
encoding, but the page itself has UTF-8 defined in the HTML meta. So
could this be caused by Apache's headers taking precedence over the
encoding defined in the HTML? Thanks again for your replies.


Previous Comments:
------------------------------------------------------------------------

[2008-09-23 20:18:23] [EMAIL PROTECTED]

No bug. use a utf-8 enabled terminal to view it properly. You have bad

HTML and forcing the browser to use ISO-8859-1 (you even explicitly set

the charset to it) hence the garbage.

------------------------------------------------------------------------

[2008-09-23 18:56:20] brett at brettbrewer dot com

Thanks very much for looking at this in spite of it being improperly
submitted, but I'm a little confused by your reply. The feed in question
is definitely UTF-8, it's being passed to SimpleXML as UTF-8. I can echo
the raw feed before passing it to a SimpleXML object and the XML
contains the proper character code (’)...then I immediately feed
that XML into a SimpleXML object and do a print_r and the feed has been
magically transformed and all instances of "’" have been replace
by "€™s" before it ever hits an HTML page. Are you telling me that the
"€™s" is the proper UTF-8 encoded representation of ’? The page
itself has an XHTML Transitional doctype and meta description defining
the charset as UTF-8, so I'm not sure what you're suggesting I fix in my
HTML. I also don't see why I would convert anything to ISO-8859-1 since
it doesn't appear that SimpleXML can parse a feed in ISO-8859-1 format.
It's certainly possible I've overlooked something...perhaps I'm missing
something obvious here, but I've posted this question on the
phpbuilder.com forums
(http://www.phpbuilder.com/board/showthread.php?p=10887201) and at least
one fairly expert poster there is stumped on this and agreed that it
must be a bug...otherwise I wouldn't have posted it as a bug report.

------------------------------------------------------------------------

[2008-09-23 16:21:10] [EMAIL PROTECTED]

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

Its UTF-8 so either convert the data to ISO-8859-1 or fix your HTML.



------------------------------------------------------------------------

[2008-09-19 19:26:24] brett at brettbrewer dot com

Description:
------------
When parsing an XML feed (wordpress) containing the character codes for
a right single curly quote (’), the character is converted into
’. Unfortunately I'm not able to get complete access to the server to
deactivate Zend optimizer, Ioncube, etc and I'm pulling the OS info from
phpinfo(). I've included the URL of the actual feed that is causing the
problems. I found a really old similar bug report for php 4.3.2, but
nothing for PHP5.Here's the old bug report URL:

http://bugs.php.net/bug.php?id=24863&edit=2
I also found:
http://bugs.php.net/bug.php?id=26964&edit=2

which suggest a similar problem with htmlentities and
html_entity_decode but I don't know if it's related. I'm sure my feed is
UTF-8 and if I convert it to ISO9xxx-1 before passing it to my SimpleXML
object then SimpleXML complains that it's not in UTF-8 format and
aborts, so I'm pretty sure it's not a UTF8 encoding issue with the feed.
I've included the feed url in the code sample below. It assumes it is
inside a class, but you can probably run the code below to reproduce the
symptoms just by removing the "this->" in two places.  

Reproduce code:
---------------
$this->blog_url = "http://75.126.106.225/blog/feed/";;
$rawFeed = file_get_contents($this->blog_url);
$xml = new SimpleXmlElement($rawFeed); 

//you can see the results of the incorrect parsing of the feed in the
left sidebar at http://75.126.106.225

Expected result:
----------------
Code should keep the ’ entity code intact or possibly convert it
to '

Actual result:
--------------
SimpleXML contstructor seems to convert all instances of ’ into
’

If you use SimpleXML to parse the feed at
http://75.126.106.225/blog/feed/ you should see the problem in the
<title> of the second item in the feed. 


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=46129&edit=1

Reply via email to