Cela ressemble SimpleXML crée une chaîne UTF-8, qui est ensuite rendu dans la norme ISO-8859-1 (latin-1) ou quelque chose près comme CP-1252. Lorsque vous enregistrez le résultat dans un fichier et que vous le diffusez via un serveur Web, le navigateur utilise l'encodage déclaré dans le fichier.
Y compris dans une page web
Depuis votre page web encodage n'est pas UTF-8, vous devez convertir la chaîne dans l'encodage que vous utilisez, par exemple ISO-8859-1 (latin-1).
Cela se fait facilement avec iconv():
$xmlout = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $xmlout);
Enregistrement à la base de données
colonne de base de données n'utilise pas le classement UTF-8, vous devez donc utiliser iconv
pour convertir la chaîne à la charset que votre base de données utilise.
En supposant que le classement de votre base de données est le même que celui dans lequel vous effectuez le rendu, vous n'aurez rien à faire lors de la lecture de la base de données.
Explication
En UTF-8, un octet de préfixe de 0xC2 est utilisé pour accéder à la moitié supérieure du bloc « Latin-1 Supplément », qui comprend des caractères tels que des lettres accentuées, symboles monétaires, des fractions, superscript 2 et 3, les symboles de droits d'auteur et de marque déposée, et l'espace insécable.
Toutefois, dans ISO-8859-1, l'octet 0xC2 représente un Â. Donc quand votre chaîne UTF-8 est mal interprétée comme l'une d'entre elles, alors vous obtenez  suivi par un autre caractère non-sens.
Etes-vous sûr de l'encodage sur la page d'affichage est correcte? – jasonbar