打开时 CURL 更改非英文字符 url

CURL changes non-english characters when opening url

我正在尝试用 curl 打开一个 url end 回显该页面中的文本。 url 将参数发送到 python 脚本并根据参数创建文件。所以,我通过 ajax 向 wordpress 函数发送参数,这部分工作,它获取参数没有任何错误,然后我用这个创建 url 并使用 curlopt_url 打开它在后端。然后回显响应发送数据到ajax.

  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 包含非英文字符,如 ş、ğ、ı 等。函数正确获取它(当我回显 $url 而不是响应时我可以看到它),但在 CURLOPT_URL 他们正在改变的部分。 此外,当我打开 url 表单浏览器时,它工作正常。

根据 OP 成功评论,我添加了我的解决方案,因为答案将对未来的访问者有所帮助:

您需要对 url 中的非英文字符使用 url 编码。

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

旁注:

而不是对特定字段或参数使用完整 url 编码,但有时您需要在特殊字符情况下对完整 url 进行编码。