如何确保PHP尊重zend.script_encoding设置?

时间:2014-10-27 10:01:55

标签: php encoding

在PHP 5.4设置中,我在PHP.ini中有这些设置:

zend.multibyte = On
zend.script_encoding = UTF-16BE
zend.detect-unicode = 0

我试图让zend引擎以特定的编码来解释我的PHP脚本,例如UTF-16BE。这意味着以其他编码编码的脚本应该失败。 我不希望zend引擎做任何猜测,无论是否存在像BOM标记这样的字节序列。

这是我的脚本index.php:

<?php echo '1';

该文件总共32个字节,使用UTF-16 LE 保存:

FF FE // BOM
3C 00 3F 00 70 00 68 00 70 00 20 00 // <?php
65 00 63 00 68 00 6F 00 20 00 // echo 
27 00 31 00 27 00 // '1'
3B 00 // ;

脚本应该失败,因为提供的编码不是UTF-16BE。但是,输出为1,证明引擎正在根据提供的字节进行编码猜测。

当我们使用带有BOM的UTF-8保存文件时,输出也是1

EF BB BF // BOM
3C 3F 70 68 70 20 // <?php
65 63 68 6F 20 // echo 
27 31 27 // '1'
3B // ;

为什么zend.detect-unicode无法正常工作?

更重要的是,我们如何配置引擎以尊重zend.script_encoding中提供的编码?

0 个答案:

没有答案