web-dev-qa-db-fra.com

PHP en-tête pour XML avec utf-8

J'utilise la fonction header () pour convertir un fichier en norme XML . Le problème est lorsque j'utilise <?php header("Content-type: text/xml; charset=utf-8"); ?> il ne fait que restituer le <?xml version="1.0"?>, sans le/charset encondrant. Est-ce que je l'utilise mal?

14
msmafra

La fonction header() ne fait que modifier les en-têtes HTTP. Le code que vous avez publié définit un en-tête Content-Type, qui est important pour indiquer aux navigateurs et aux autres clients le type de fichier que vous envoyez.

La ligne <?xml version="1.0"?> dont vous parlez fait partie du document lui-même et n'est pas affectée par les en-têtes HTTP.

Vos balises indiquent que vous utilisez DOM pour créer votre document XML. Si vous modifiez votre constructeur DomDocument pour lui transmettre également le charset,

$doc = new DomDocument('1.0', 'UTF-8');

Il devrait sortir ce jeu de caractères dans le document XML.

13
John Flatness

header définit simplement un en-tête HTTP dans le résultat. PHP ne fait rien d'autre avec la valeur, c'est donc à vous de vous assurer qu'elle est utilisée correctement.

Si vous utilisez une bibliothèque XML pour générer votre fichier XML (y compris le prologue), consultez la documentation de cette bibliothèque. Si vous exportez le XML "à la main" (o, vous devez ajouter vous-même l'attribut nécessaire au prologue.

2
Michael Madsen

Vous pouvez aussi utiliser

<?php echo '<?xml version"1.0" encoding="UTF-8"?>'; ?>
0
Sahan