Как я могу написать файл на PHP с кодировкой OCS-2 Big Endian? Промышленная система, с которой я пытаюсь интегрироваться, требует этого формата кодирования.
Чтобы упростить проблему, предположим, что содержимое, которое я пытался записать в файл, было сохранено в переменной $sXML, в этом случае содержимое 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 );
До сих пор я пробовал, например:
$sXML = iconv( '', 'UCS-2BE', $sXML );
$sXML = html_entity_decode( htmlentities( $sXML, ENT_QUOTES, 'Windows-1252' ), ENT_QUOTES, 'UCS-2BE' );
$sXML = mb_convert_encoding( $sXML, 'UCS-2BE', 'HTML-ENTITIES' );
И хотя все это портит удобочитаемость файла, сгенерированного в Notepad++, ни одно из них не приводит к установке кодировки файла в UCS-2BE.
Если вы не знакомы с кодировкой OCS-2 с обратным порядком байтов, это может оказаться важным/полезным чтением: Более подробное объяснение (блог): понимание порядка следования байтов в обратном и обратном порядке.
Я пытался просмотреть другие вопросы здесь, в StackOverflow, но нашел решение этой конкретной проблемы или сумел адаптировать к этому любые другие. Любая помощь могла бы быть полезна! Спасибо.