關(guān)于PHP調(diào)用Python數(shù)據(jù)傳輸問題
這是以前大學(xué)時(shí)做項(xiàng)目出現(xiàn)的問題,現(xiàn)在把它挪上來,希望給遇到問題的未來大佬給出一些小的思路,請(qǐng)大佬們不要大意的幫我改正,如果出現(xiàn)問題或者有更好的解決方法,希望大家可以給出,謝謝!
以前小組開展項(xiàng)目實(shí)訓(xùn),我們小組選擇的是大數(shù)據(jù)分析,其中有一個(gè)用python進(jìn)行文本分析之后對(duì)用戶輸入的數(shù)據(jù)進(jìn)行分析,然后輸出對(duì)應(yīng)的崗位及其他。要求是前端將文本要求傳到后臺(tái)php,php調(diào)用python程序處理,再將數(shù)據(jù)傳給php,然后再傳到前端,進(jìn)行下一步處理。結(jié)果python傳回的數(shù)據(jù),在前端顯示亂碼了,而且得出的結(jié)果與單獨(dú)運(yùn)行python代碼完全不同,一句話,就是php調(diào)用python程序期間出錯(cuò)了。
我很認(rèn)真的檢查了好幾遍,確定自己php和python所有的編碼都是用的utf-8編碼,所以這一點(diǎn)是毋庸置疑的,那么問題究竟出在哪呢?php調(diào)用python語句是
$job = "有責(zé)任心,擅長(zhǎng)JAVA";//傳入的文本信息
$area = 'E:/text/sim_str.py';//Python程序的地址
$cmd = system("python3 $area 2>C:/Users/Administrator/Desktop/2.txt $job",$ret);//2>是將報(bào)錯(cuò)內(nèi)容定位到這個(gè)文件,$ret是一個(gè)返回參數(shù),0是正常,1是出錯(cuò)。
最后經(jīng)過多次的測(cè)試,我發(fā)現(xiàn)傳過去時(shí)對(duì)文字的編碼出現(xiàn)了問題,應(yīng)該不是UTF-8編碼了。有位大神說,這是因?yàn)閣indows系統(tǒng)會(huì)自己對(duì)傳輸?shù)男畔⑦M(jìn)行再次編碼。然后 我想直接改編碼,結(jié)果這個(gè)python3編碼改變出現(xiàn)了問題。最后我的解決方案是不通過系統(tǒng)傳送,而是直接通過第三方數(shù)據(jù)庫(kù)。雙方都調(diào)用數(shù)據(jù)庫(kù)。一切都可以解決了。
PS:后來又遇見過這種問題,我將python代碼進(jìn)行了修改,讓它最終可以直接只傳遞數(shù)字,再在前端對(duì)數(shù)字進(jìn)行判斷。
以上所述是小編給大家介紹的php調(diào)用python文件詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- 解決Python3 被PHP程序調(diào)用執(zhí)行返回亂碼的問題
- python如何調(diào)用php文件中的函數(shù)詳解