OK, I think I see what you're talking about:
<?php
header('Content-Type: text/plain');
$text = "<?xml version='1.0' encoding='UTF-8'?><data><text>What’s up?</text></data>";
$test = new SimpleXmlElement($text);
print_r($test);
Which outputs:
SimpleXMLElement Object
(
[text] => What’s up?
)
It sort of seems as if it is running with the LIBXML_NOENT option by default, but a bit of searching did not turn up anything documenting that behavior, nor could I locate anything in bugs.php.net.
However, in my case it did at least convert it to a right quote character and not the strange characters you reported, so I'm not sure what might be going on in that respect.