从shell_exec接收具有非标准字符的输出



我正试图获得通过PHP执行的Python程序的结果,该程序传递坐标的参数,并在这些坐标处打印地址。

例如,当使用谷歌地图上随机选择的坐标46.07018635、3.93749893时,别担心,我在这里不是在说我自己,我得到的地址是Renaison,Roanne,Loire,Auvergne Rhône Alpes,Metropolitan France,42370,France。此代码非常适用于地址为英语的坐标,但当出现类似ô的字符时,当$output被回显时,它显示为�.

执行python的代码是:

$code = 'python ./reverseGeoloc.py ' . $lat . ',' . $long;
$command = escapeshellcmd($code);
$output = shell_exec($command);

Python本身就是:

import sys
coords = sys.argv[1]
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="my_request")
location = geolocator.reverse(coords, language='en')
print(location.address)

因此,用这些坐标回显$output可以得到:CCD_ 1。

如果在终端中隔离运行,则会正确打印,并按预期给出Renaison, Roanne, Loire, Auvergne-Rhône-Alpes, Metropolitan France, 42370, France

我已经尝试了所有我能在谷歌上找到的东西,但到目前为止都没有效果!

感谢您的帮助!

谢谢!

事实上,我已经找到了我的答案,花了很长时间进行实验,以防有人遇到同样的问题。实际上我不得不使用header('Content-Type: text/html; charset=iso-8859-1');在文件的一开始,而不是使用utf-8,然后它能够正确地与shell exec接口。

相关内容

  • 没有找到相关文章

最新更新