PHP zend.script_encoding如何工作?

时间:2014-10-27 09:11:46

标签: php php-internals

我正在尝试使用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如何运作?

我们如何让引擎解释以特定编码编写的脚本?

0 个答案:

没有答案