Добавить штамп спецификации в xml с помощью php

#php #xml #fopen #byte-order-mark

#php #xml #fopen #метка порядка байтов

Вопрос:

Я завершаю свой проект по fusion chart. Мне нужно добавить подпись спецификации в мой динамический xml. Но я не могу понять, как я могу добавить подпись спецификации для динамического XML с помощью php. Мои коды выглядят так

 $filename="a.xml";
$file= fopen("$filename", "w");
$_xml="<something/>";
fwrite($file, $_xml);
fclose($file);
  

В документации fusion chart я обнаружил, что мне нужно добавить для общего вывода php

 header ( 'Content-type: text/xml' );
echo pack ( "C3" , 0xef, 0xbb, 0xbf );
  

Итак, может ли кто-нибудь помочь мне с этим?
Спасибо,

Комментарии:

1. Какую кодировку / кодировку использует ваш файл?

2. Вы пишете в режиме utf-16? Спецификация не является необходимой (и не рекомендуется) для вывода в формате UTF-8.

3. @Marc B Я не пишу в utf-16

4. @DAKSH: у ANSI нет спецификации, см. Мой ответ, какие формы кодирования имеют спецификацию.

5. @Marc B: Не то чтобы я хотел рекомендовать это, но вы можете использовать спецификацию, чтобы указать, что файл находится в UTF-8.

Ответ №1:

Спецификацию можно использовать в качестве подписи независимо от того, как преобразуется текст в Юникоде: UTF-16, UTF-8 или UTF-32. Точные байты, составляющие спецификацию, будут такими U FEFF , в которые этот формат преобразования преобразует символ Unicode. В этой форме спецификация служит для указания как того, что это файл Unicode, так и того, в каком из форматов он находится.

Если вы хотите, просто передайте строку (которая является двоичной в PHP), содержащую спецификацию. Пример строк:

 Bytes           PHP String          Encoding Form
-----           ----------          -------------
00 00 FE FF     "xFExFF"      UTF-32, big-endian
FF FE 00 00     "xFFxFE"      UTF-32, little-endian
FE FF           "xFExFF"          UTF-16, big-endian
FF FE           "xFFxFE"          UTF-16, little-endian
EF BB BF        "xEFxBBxBF"      UTF-8
  

См. http://unicode.org/faq/utf_bom.html