кодировка — выходной файл в PHP, закодированный как OCS-2 Big Endian

Как я могу написать файл на PHP, который имеет кодировку OCS-2 Big Endian? Промышленная система, с которой я пытаюсь интегрироваться, требует этот формат кодирования.

Чтобы упростить проблему, предположим, что содержимое, которое я пытался записать в файл, было сохранено в переменной $ SXPath,, в этом случае содержимое XML с кодировкой, установленной в заголовке XML, готово:

$sXML = '<?xml version="1.0" encoding="utf-16BE"?>';
$sXML .= '<envelope><node>1</node><node>2</node><node>3</node></envelope>';
/* Insert solution here */
file_put_contents( 'filename.xml', $sXML );

До сих пор я пробовал такие как:

  1. $sXML = iconv( '', 'UCS-2BE', $sXML );
  2. $sXML = html_entity_decode( htmlentities( $sXML, ENT_QUOTES, 'Windows-1252' ), ENT_QUOTES, 'UCS-2BE' );
  3. $sXML = mb_convert_encoding( $sXML, 'UCS-2BE', 'HTML-ENTITIES' );

И хотя все это ухудшает удобочитаемость файла, созданного в Notepad ++, ни один из них не приводит к установке кодировки файла в UCS-2BE.

Если вы не знакомы с кодировкой Big Endian OCS-2, это может оказаться полезным / полезным чтением: Объяснение лучше (блог): Понимание старшего и младшего байтового порядка.

Я пытался просмотреть другие вопросы здесь, на StackOverflow, но нашел решение этой конкретной проблемы, или мне удалось адаптировать другие вопросы к этому. Любая помощь могла бы быть полезна! Спасибо.

3

Решение

Как оказалось, я был очень близок, и в конце концов я решил это. Проверенное рабочее решение выглядит следующим образом:

$sXML = pack( 'n', 0xFEFF ) . iconv( '', 'UCS-2BE', $sXML );

Спасибо всем за помощь в устранении этой проблемы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]