调用使用UTF-8编码处理文件的python脚本时,PHP system()会以静默方式失败

调用使用UTF-8编码处理文件的python脚本时,PHP system()会以静默方式失败,php,python,python-3.x,php-7,php-7.2,Php,Python,Python 3.x,Php 7,Php 7.2,Tl;Dr:考虑使用Python框架瓶代替PHP。如果你不能,我在这篇文章的底部有python2特定的解决方案链接 我制作了一个简单的马尔可夫链python程序。它在两个词表上运行,希腊语.txt和日语.txt。请注意,japanese.txt包含Ō字符,但即使我用常规的O替换字符,问题仍然存在 我想制作一个非常简单、小而脏的PHP API 当我调用PHP文件时,它应该回显命令python3 markov-chain.py$\u GET['file']10$\u GET['min']$\u GE

Tl;Dr:<强>考虑使用Python框架瓶代替PHP。如果你不能,我在这篇文章的底部有python2特定的解决方案链接

我制作了一个简单的马尔可夫链python程序。它在两个词表上运行,
希腊语.txt
日语.txt
。请注意,
japanese.txt
包含
Ō
字符,但即使我用常规的
O
替换字符,问题仍然存在

我想制作一个非常简单、小而脏的PHP API

当我调用PHP文件时,它应该回显命令
python3 markov-chain.py$\u GET['file']10$\u GET['min']$\u GET['max']
的输出

我有这个:


当我在
希腊文.txt
wordlist上调用这个函数时,一切都正常工作。但是,当我在
japanese.txt
上调用它时,状态代码是
1
,并且没有向
system()的输出发送任何内容。当我将生成的命令复制并粘贴到终端中时,即使对于
japanese.txt
变体,它也可以正常工作

我试图制作
test.sh
文件,该文件将包含硬编码参数:

#/垃圾箱/垃圾箱
python3 markov-chain.py希腊语.txt 10 3 6 2>>errorlog.txt
当我从PHP调用这个文件时,它可以工作。但是,当我将
test.sh
文件更改为使用
japanese.txt
wordlist时,我仍然没有得到任何输出和状态代码。从终端调用
test.sh
对于两种变体(希腊语和日语)都非常有效。当我从PHP调用
test.sh
时,错误日志文件中没有写入任何内容(甚至没有创建该文件!)


编辑:

希腊语单词表是ASCII,日语单词表是UTF-8,所以PHP不接受(或者Python没有正确发送)UTF-8编码

编辑:

这不是一个真正的解决方案,但我最终切换到Python框架,这正是我使用PHP的原因:我只是将它写在一个文件中,它。。。作品非常适合简单的API,我只需要快速地将它们组合起来


关于UTF-8的问题,我发现了,但无论如何都无法解决我的问题。希望它能帮助一些人。

当你描述它时,首先想到的是它在希腊语中很好,而在日语中不太好,这可能是一个编码问题。您介意分享一些python代码吗?您可能应该考虑与用户一起使用或何时使用
system()
input@IsThisJavascript希腊语是ASCII,日语是UTF-8,所以我想你是对的,这就是问题所在。然而,Python处理这两个方面都很好。这是python代码:@MagnusEriksson谢谢,看起来我应该用这个。然而,问题似乎是由于某种原因,PHP无法从
系统(…)
检索UTF-8文本?