2016-07-24 74 views
0

我的C++桌面應用程序是發佈數據到我與charset=UTF-8格式(在我的HTTP請求報頭中指定)服務器。我的PHP腳本分析發佈的數據沒有正確讀取_POST處理UTF-8格式發佈數據

我的腳本是否需要手動解碼發佈的數據?我想如果HTTP POST請求指定了字符集,腳本/ PHP會自動找出它?

foreach($_POST as $key => $value) 
{ 
    $contents .= $key . ", " . $value . "\r\n"; 
} 

// contents = n, J o h n D o e 
// when it should = name, John Doe\r\nuserid, hithere\r\n 

回答

0

我想如果HTTP POST請求指定的腳本/ PHP會自動計算出來的字符集?

否,字符編碼的下層。首先,您需要讓PHP知道您發送數據的內容類型。

檢查manual on $_POST,它說:

傳遞給經由HTTP POST方法當前腳本變量的數組使用application/x-www-form-urlencodedmultipart/form-data或作爲在請求中的HTTP內容類型時。

對於HTTP文件上傳,您可以使用後者,作爲其他「常規」表單數據(文本字段,基本上是發送字符串數據的任何東西)第一個。

,當然你的腳本將需要發送根據所選擇的內容類型編碼的數據。無論你使用的是什麼HTTP庫,都應該提供處理它的方法;如果你不確定的話,我會建議你看一下docuentation。


只要模擬HTML表單,這就是實現它的方法。如果這不是你的目標,你的另一個選擇是發送你選擇的任何格式的編碼數據,比如f.e. JSON(或者甚至可能根本沒有用任何特殊的方式處理),然後使用file_get_contentsphp://input流包裝器讀取原始輸入。

+0

我的C++應用還指定內容類型在標題爲'內容 - 類型:應用程序/ x-WWW的形式urlencoded'。表單數據只是'name = John + Doe&userid = hithere'。我試過'utf8_decode($ key)'但沒有運氣,結果相同。你能指出我正確的方向來解碼/處理UTF-8格式嗎? –

+0

服務器日誌說什麼?你確定你正在發佈POST請求嗎? – CBroe