пытаюсь связать python с php, а именно - внедрить нейронные сети в сайт.
вызываю из php скрипт таким образом:
$x = shell_exec("python C:/Users/mx/script.py \"".$_POST["text"]."\" 2>&1");
echo($x);
в script.py написано следующее:
import sys
tx = sys.argv[1]
tx = tx.lower()
print(tx)
в итоге я вижу текст вида �����, но если я уберу строку tx = tx.lower(), то текст вернётся в нужной кодировке, так как я его вписал на странице. любые русские буквы превращаются в знаки вопроса, остальные символы отображаются нормально.
при этом непосредственно из cmd всё работает как надо.
можно, конечно, подготовить текст в php, но, думаю, это не совсем правильно.
как получить текст в нормальной кодировке после обработки в python?
и ещё вопрос по поводу сброса вывода, мне в php нужна лишь последняя строка, т.е. непосредственно результат работы сети. я обложился функциями сброса:
sys.stdout.flush()
print(tx, flush=True)
sys.stdout.flush()
sys.exit()
однако всё равно возвращается лишняя строка: Using TensorFlow backend. , причём после вывода print(). как правильно получать от скрипта только нужные данные?
https://ru.stackoverflow.com/questions/141035/%d0%9a%d0%b0%d0%ba-%d0%b8%d0%b7-python-%d0%b2%d1%8b%d0%b2%d0%b5%d1%81%d1%82%d0%b8-%d0%bd%d0%b0-windows-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d1%8c-%d1%81%d1%82%d1%80%d0%be%d0%ba%d1%83-%d0%b2-%d0%ae%d0%bd%d0%b8%d0%ba%d0%be%d0%b4%d0%b5/359348#359348
– Tihon May 15 '18 at 13:01python -Vпечатает в php окружении? (вы уверены, что именно 3.5?) – jfs May 15 '18 at 16:27$_POST["text"]на фиксированную строку к примеру:"\u{430}\u{431}\u{432}". В Питоне добавьте:print(ascii(sys.argv[1]))иprint(sys.stdout.encoding)– jfs May 15 '18 at 16:32flush=Trueотдельный Stack Overflow вопрос задайте. – jfs May 15 '18 at 16:34python --versionотвечаетPython 3.5.3.print(ascii(sys.argv[1]))печатает\\u{430}\\u{431}\\u{432}.print(sys.stdout.encoding)печатаетcp1251.одинаково и через консоль, и через php.
– Maximmka May 16 '18 at 07:48tx="текст",len(tx)выдаёт разные результаты: когда выполняю через php - показывает длину строки 10, когда через консоль - показывает 5. при этом кодировку они показали одинаковую, как так получилось? – Maximmka May 16 '18 at 07:52\uбуквально. Что у вас:echo "\u{430}\u{431}\u{432}" . phpversion();показывает? – jfs May 16 '18 at 08:36