#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