好的,这是我的场景。
我有file.php
包含以下内容:
<?php
$output = shell_exec("php output.php");
echo $output;
?>
其中output.php
包含以下内容:
<?php
echo "This is my output!";
?>
当我file.php
从 Web 浏览器运行时,我得到以下输出:
‹ ÉÈ,V¢ÜJ…üÒ’‚ÒEÿÿp³*š
但是,当我php output.php
直接从 shell 运行相同的程序时,我得到了正确的输出:
This is my output!
现在我很清楚这是某种编码问题,但我一生都无法弄清楚如何解决它。我尝试使用putenv('LANG=en_US.UTF-8');
. 我还尝试使用header('Content-Type: text/html; charset=UTF-8');
,甚至尝试确定使用mb_detect_encoding($out, 'UTF-8', true);
. 没有结果。
exec()
产生相同的格式错误的输出。
如果有人能对此有所了解,我将非常感激,并可能提供一些关于 shell_exec 和文件输出之间发生的事情导致输出格式错误的见解。