Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.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
Python 如何解码从shell_exec()返回的UTF-8字符串?_Python_Php_Apache - Fatal编程技术网

Python 如何解码从shell_exec()返回的UTF-8字符串?

Python 如何解码从shell_exec()返回的UTF-8字符串?,python,php,apache,Python,Php,Apache,这项工作: $csv = " b'\xd0\x9e\xd0\xb4\xd0\xbd\xd0\xb0\xd0\xba\xd0\xbe \xd0\xbe\xd0\xb1\xd0\xb8\xd0\xb4\xd0\xbd\xd0\xbe \xd0\xb1\xd1\x83\xd0\xb4\xd0\xb5\xd1\x82 \xd0\xbf\xd0\xbe\xd1\x82\xd1\x80\xd0\xb0\xd1\x82\xd0\xb8\xd1\x82\xd1\x8c \xd0\xbd\xd0\xb0 \xd0

这项工作:

$csv = " b'\xd0\x9e\xd0\xb4\xd0\xbd\xd0\xb0\xd0\xba\xd0\xbe \xd0\xbe\xd0\xb1\xd0\xb8\xd0\xb4\xd0\xbd\xd0\xbe \xd0\xb1\xd1\x83\xd0\xb4\xd0\xb5\xd1\x82 \xd0\xbf\xd0\xbe\xd1\x82\xd1\x80\xd0\xb0\xd1\x82\xd0\xb8\xd1\x82\xd1\x8c \xd0\xbd\xd0\xb0 \xd0\xb4\xd0\xb5\xd0\xbb\xd0\xb0 \xd0\xb2\xd1\x80\xd0\xb5\xd0\xbc\xd1\x8f, \xd0\xba\xd0\xbe\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xb5 \xd0\xbc\xd0\xbe\xd0\xb3\xd0\xbb\xd0\xb8 \xd0\xb1\xd1\x8b \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb5\xd1\x81\xd1\x82\xd0\xb8 \xd0\xb1\xd0\xbe\xd0\xbb\xd0\xb5\xd0\xb5 \xd0\xbf\xd0\xbb\xd0\xbe\xd0\xb4\xd0\xbe\xd1\x82\xd0\xb2\xd0\xbe\xd1\x80\xd0\xbd\xd0\xbe.'";
$csv = mb_convert_encoding($csv,'UTF-8');
这将返回未转换的字符串:

$o = shell_exec('python3.6 /var/www/html/main.py'.'normal');
$contents = mb_convert_encoding($o,'UTF-8');
echo $contents
Python脚本返回相同的字符串。我尝试了strval()和unpack(),但没有成功。
以下是“locale-a”的结果:


即使我在eval()中调用脚本,它也会将字符串解释为数据。

在调用
shell\u exec()之前尝试添加这一行。

putenv('LANG=en_US.UTF-8');

在调用
shell\u exec()之前尝试添加此行。

putenv('LANG=en_US.UTF-8');

我把它放在php脚本中,我不需要在脚本之间进行任何编码,它只是工作:

putenv("PYTHONIOENCODING=utf-8");

我把它放在php脚本中,我不需要在脚本之间进行任何编码,它只是工作:

putenv("PYTHONIOENCODING=utf-8");

这里没有正确区分代码和数据。您的
$csv=“…”是代码-PHP解析器将把这些
\x..
内容转换为它们的实际字节值。您的
$csv
变量不再包含
\x..
。“Python脚本返回相同的字符串。”-从PHP的角度来看,这已经是数据了。PHP解析器不再讨论这个问题了。@CBroe但是如果是这样的话,为什么strval()不起作用呢?我不明白为什么它应该这样做?该函数的目的是获取其他数据类型的字符串表示形式-因此,如果您有
$x=5,这将确保您有一个实际的字符串值,而不是后面的数字。如果一开始就已经是一个字符串,那么它为什么要做任何事情呢?我想我们可以简单地假设它先检查,然后直接返回未修改的值。@CBroe那么如果数据已经是字符串,我就不知道如何从数据转换为字符串string@CBroe或者你的意思是转换成字节然后解码?你在这里没有正确区分代码和数据。您的
$csv=“…”是代码-PHP解析器将把这些
\x..
内容转换为它们的实际字节值。您的
$csv
变量不再包含
\x..
。“Python脚本返回相同的字符串。”-从PHP的角度来看,这已经是数据了。PHP解析器不再讨论这个问题了。@CBroe但是如果是这样的话,为什么strval()不起作用呢?我不明白为什么它应该这样做?该函数的目的是获取其他数据类型的字符串表示形式-因此,如果您有
$x=5,这将确保您有一个实际的字符串值,而不是后面的数字。如果一开始就已经是一个字符串,那么它为什么要做任何事情呢?我想我们可以简单地假设它先检查,然后直接返回未修改的值。@CBroe那么如果数据已经是字符串,我就不知道如何从数据转换为字符串string@CBroe或者你的意思是转换成字节,然后解码?不起作用,添加了“locale-a”的结果,若那个可能不起作用,添加了“locale-a”的结果(如果可能有帮助的话)