2016-01-23 25 views
0

我試圖用捲曲結束打開一個URL以回顯該頁面中的文本。 url將參數發送給python腳本,並根據參數創建一個文件。所以,我通過ajax發送參數給wordpress函數,這部分工作,它獲取參數沒有任何錯誤,然後我用這個創建url並使用curlopt_url在後端打開它。然後迴應響應發送數據到ajax。CURL在打開url時更改非英文字符

function my_function() { 
    $param1 = $_REQUEST['p1']; 
    $param2 = $_REQUEST['p2']; 
    $url = "http://localhost:1234/handle?a=$param1&b=$param2"; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_VERBOSE, true); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    $store = curl_exec ($ch); 
    echo substr($store, 1); 
    curl_close ($ch); exit(); 

假設P2包含非英文字符,如S,G,我等功能得到它正確(我能看到它,當我回聲$網址,而不是反應),但在CURLOPT_URL一部分,他們是改變。 此外,當我打開url窗體瀏覽器,它工作正常。

+0

你的PHP字符編碼設置是錯誤的。有很多關於該主題的教程。你必須小心配置你的整個工具鏈來使用utf8編碼。 – arkascha

+0

使用urlencode($ _REQUEST ['p2']); – devpro

+0

@arkascha它是UTF-8,我不認爲它是問題的根源。一切工作正常exept捲曲 –

回答

0

從OP成功評論我加入我的解決方案作爲一個答案將有助於爲未來的用戶:

您需要使用進行urlencode在網址使用非英文字符。

$param2 = urlencode($_REQUEST['p2']); 

旁註:

而不是使用編碼在特定領域或PARAM完整的URL使用,但有時你需要編碼的完整網址的特殊字符情況。