返回非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修复了它代码>在命令之前