Заголовок PHP для xml с utf-8

Я использую () функция, чтобы превратить файл в стандарт XML. Проблема в том, когда я использую <?php header("Content-type: text/xml; charset=utf-8"); ?> это просто делает <?xml version="1.0"?>, без enconding / charset. Я неправильно его использую?

3 ответов


на header() функция просто изменяет заголовки HTTP. Код, который вы разместили, устанавливает Content-Type заголовок, который важен для указания браузерам и другим клиентам, какой тип файла вы обслуживаете.

на <?xml version="1.0"?> строка, о которой вы говорите, является частью самого документа и не зависит от заголовков HTTP.

ваши теги говорят, что вы используете DOM для создания XML-документа. Если вы измените конструктор DomDocument, чтобы также передать кодировку,

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

это следует вывести эту кодировку в XML-документе.


header просто устанавливает HTTP-заголовок в результате. PHP больше ничего не делает со значением, поэтому вам нужно убедиться, что он используется правильно.

Если вы используете библиотеку XML для создания XML (включая пролог), проверьте документацию для этой библиотеки. Если вы выводите XML "вручную" (o, вам нужно добавить необходимый атрибут в пролог самостоятельно.


вы также можете использовать

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