PHP shell_exec输出问号

时间:2012-06-06 11:28:17

标签: php bash encoding shell-exec

我正在使用通过shell_exec调用外部程序的PHP脚本,我对它的输出感兴趣。问题是当我使用俄语字母时输出总是作为问号。

整个事情是在Ubuntu 11.10上运行,当外部程序在bash中执行时它产生正确的输出(没有问号)。

这是我的代码:

setlocale(LC_ALL, "en_US.UTF-8");
echo morpher("Антон");

function morpher($command) {
    static $path = '/usr/bin/mono %sengine/helpers/language/morpher.exe %s';
    $path = sprintf($path, SITE_ROOT, $command);

    $output = shell_exec($path);

    error_log($output) // series of question marks instead of russian letters
    error_log( mb_detect_encoding($output) ); // outputs ASCII
    error_log( iconv('ASCII', 'UTF-8', $output) ); // same question marks

    return explode("\n", $output);
}

1 个答案:

答案 0 :(得分:0)

解决方法是添加LANG="en_US.UTF8",如此:'LANG="en_US.UTF8" mono %sengine/helpers/language/morpher.exe %s';