我正在尝试使用zend引擎将我的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
。
所以我尝试删除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
。
然后我尝试用ASCII编码 start 序列 - <?php
- 而剩下的字符仍为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脚本,但它仍然无法正常工作:
警告:输入中出现意外字符:'在第1行的C:\ xampp \ htdocs \ test \ index.php
警告:输入中出现意外字符:'在第1行的C:\ xampp \ htdocs \ test \ index.php
解析错误:第1行的C:\ xampp \ htdocs \ test \ index.php中的语法错误,意外'c'(T_STRING)
zend.script_encoding
如何运作?
我们如何让引擎解释以特定编码编写的脚本?