简体   繁体   English

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

[英]How to decode UTF-8 string returned from shell_exec()?

This works:这有效:

$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');

While this returns unconverted string:虽然这会返回未转换的字符串:

$o = shell_exec('python3.6 /var/www/html/main.py'.'normal');
$contents = mb_convert_encoding($o,'UTF-8');
echo $contents

Python script returns same string. Python 脚本返回相同的字符串。 I tried strval() and unpack(), didn't work.我试过 strval() 和 unpack(),没有用。
Here is the result of "locale -a": here这是“locale -a”的结果: here

Even if i put call to script in eval() it interprets string as data.即使我在 eval() 中调用脚本,它也会将字符串解释为数据。

在调用shell_exec()之前尝试添加这一行:

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

我把它放在 php 脚本中,我不必在脚本之间编码任何东西,它只是有效:

putenv("PYTHONIOENCODING=utf-8");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM