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

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

Ответы

Ответ 1

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

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

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

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

Он должен выводить эту кодировку в документе XML.

Ответ 2

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

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

Ответ 3

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

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