Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回非ascii字符串时php shell_exec失败_Php_Python_Exec_Ascii_Globalization - Fatal编程技术网

返回非ascii字符串时php shell_exec失败

返回非ascii字符串时php shell_exec失败,php,python,exec,ascii,globalization,Php,Python,Exec,Ascii,Globalization,使用命令 $ret = shell_exec($command); 当$command返回包含非ascii字符(papír)的字符串时,$ret会导致为空,但当$command返回不包含非ascii字符的字符串时,它会起作用 使用exec或system时也会发生同样的情况 作为$command我尝试了 'LANG=en_US.utf-8; python myapp.py '.escapeshellarg($in); 'python myapp.py '.escapeshellarg($in);

使用命令

$ret = shell_exec($command);
$command
返回包含非ascii字符(papír)的字符串时,
$ret
会导致为空,但当
$command
返回不包含非ascii字符的字符串时,它会起作用

使用exec或system时也会发生同样的情况

作为
$command
我尝试了

'LANG=en_US.utf-8; python myapp.py '.escapeshellarg($in);
'python myapp.py '.escapeshellarg($in);

结果显然取决于$in,但当
$in
包含非ascii字符且脚本仅返回ascii字符时,它会起作用,所以我认为问题在于输出不是输入

我创建了一个文件命令:
#/bin/bash STR=“papír”echo$STR
然后我运行php-r“var_dump(shell_exec('./命令2>&1');”,它不会重新运行null,而是(字符串(7)“papír”)。注意
php-r“echo strlen('papír');”
将给出6(字节数)。所有这些都对我有用。在使用它进行测试后,我发现myapp.py在重定向到文件时也会失败
myapp.py>out.txt
导致UnicodeEncodeError。请参阅:我通过添加
export PYTHONIOENCODING=UTF-8修复了它在命令之前