Я пытаюсь заставить Zend Engine интерпретировать мои PHP-скрипты как UTF-16BE. На установке PHP 5.4 у меня есть следующие настройки в моем файле PHP.ini:
zend.script_encoding = UTF-16BE
zend.detect-unicode = 0
zend.multibyte = On
Это мой скрипт index.php:
<?php echo '1';
Файл в общей сложности 32 байта, сохраненный с использованием UTF-16BE:
FE FF // BOM
00 3C 00 3F 00 70 00 68 00 70 00 20 // <?php
00 65 00 63 00 68 00 6F 00 20 // echo
00 27 00 31 00 27 // '1'
00 3B // ;
Однако скрипт не работает; выход <?php echo '1';
вместо 1
,
Поэтому я попытался удалить спецификацию:
00 3C 00 3F 00 70 00 68 00 70 00 20 // <?php
00 65 00 63 00 68 00 6F 00 20 // echo
00 27 00 31 00 27 // '1'
00 3B // ;
Но выход по-прежнему <?php echo '1';
вместо 1
,
Затем я попытался кодировать Начните последовательность — <?php
— в ASCII, а остальные символы остаются в кодировке UTF-16BE:
3C 3F 70 68 70 20 // <?php
00 65 00 63 00 68 00 6F 00 20 // echo
00 27 00 31 00 27 // '1'
00 3B // ;
Кажется, что движок теперь может интерпретировать PHP-скрипт, но он все еще не работает:
Предупреждение: неожиданный символ при вводе: ‘в C: \ xampp \ htdocs \ test \ index.php в строке 1
Предупреждение: неожиданный символ при вводе: ‘в C: \ xampp \ htdocs \ test \ index.php в строке 1
Ошибка разбора: синтаксическая ошибка, неожиданное ‘c’ (T_STRING) в C: \ xampp \ htdocs \ test \ index.php в строке 1
Как zend.script_encoding
Работа?
Как мы можем заставить движок интерпретировать сценарии, написанные в определенной кодировке?
Задача ещё не решена.
Других решений пока нет …