У меня есть страница на моем веб-сайте, которая получает основной контент со старого мейнфрейма. Кодировка содержимого мэйнфрейма — windows-1255 (иврит). Кодировка моего сайта - UTF-8.
Сначала я использовал iframe для отображения полученного ответа от мейнфрейма. В этом решении у меня не было проблем с настройкой кодировки страницы, и отображение символов было в порядке, но у меня были некоторые проблемы с адаптивным стилем страницы (все мои веб-сайты адаптивны).
Затем я попытался получить содержимое с помощью file_get_contents
и добавить его в нужное место, но все символы выглядят так: ������ ��, затем я преобразовал содержимое:
iconv("cp1255","UTF-8",file_get_contents("my_url"));
Результатом этого стал обратный иврит. Например, слово «хороший» появляется как «эцин». Контент также включает теги HTML, а не только текст на иврите, поэтому я не могу просто перевернуть текст с помощью hebrev
.
Я видел, что в PHP 4 существует функция fribidi_log2vis, которая кажется для решения моей проблемы, но он не поддерживается в PHP 5 (я работаю с PHP 5.3.3).
Есть ли способ справиться с этим лучше, чем загрузка контента в iframe?
ОБНОВЛЕНИЕ
Я попытался получить тестовый файл, который я создал (с кодировкой windows-1255), и мой исходный код работает нормально. Я подозреваю, что контент, который я получаю, не является Windows-1255, по крайней мере, не с точки зрения порядка букв иврита. Причиной может быть преобразование на мейнфрейме. Я должен разобраться с этим (мне нужно подождать до воскресенья, потому что у меня нет прямого доступа к серверу).
preg_replace_callback
. Во-вторых, создается впечатление, что содержимое, поступающее с мэйнфрейма, не являетсяcp1255
или содержит некоторые символыbidi
, которые управляют направлением текста. В любом случае, отсюда трудно сказать, но если бы вы могли загрузить пример содержимого файла, мы могли бы помочь в дальнейшем. - person Alex   schedule 03.01.2014