Php CURL在打开url时更改非英语字符

Php CURL在打开url时更改非英语字符,php,curl,non-english,Php,Curl,Non English,我正在尝试打开一个url,其中curl end回显该页面中的文本。url向python脚本发送参数,并根据参数创建文件。所以,我通过ajax将参数发送到wordpress函数,这部分工作正常,它可以毫无错误地获取参数,然后我用它创建url,并使用curlopt_url在后端打开它。然后回显响应将数据发送到ajax function my_function() { $param1 = $_REQUEST['p1']; $param2 = $_REQUEST['p2']; $url

我正在尝试打开一个url,其中curl 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中的非英语字符使用urlencode

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


不要对特定字段或参数使用完整url编码,但有时需要在特殊字符大小写中对完整url进行编码。

php的字符编码设置错误。关于这个主题有很多教程。您必须小心地将整个工具链配置为使用utf8编码@阿卡夏:这是UTF-8,我不认为这是问题的根源。一切正常,除了curl@devpro我已经为$url变量尝试了urlencode,我会按照您的方式尝试,然后回来,谢谢您的建议是的,只是对值进行编码,而不是url测试