繁体   English   中英

cURL不处理外来http字符php

[英]cURL not handling foreign http characters php

我的字符串中有一个URL,不幸的是它带有外来字符。 当我将它们发送到curl_setopt($ go,CURLOPT_URL,$ url)时,什么都没有发生,该命令未运行。 另一方面,当我使用Chrome浏览器并复制链接位置(包含外来字符)并将其突然粘贴到浏览器中时,外来字符会被编码为%20%D5%F0%EF%EB%EF%E3 %E9%F3%F4%DD%F2,我知道%20代表空格..此转换后的字符串可与curl命令配合使用urlencode和iconv已使用,但尚未找到正确的方法。 结果与粘贴的结果不匹配。 有什么功能吗? 炭黑很希腊。 非常感谢

我有同样的问题。

当我运行curl函数并且url仅包含英文字符时,一切都很好。

但是,如果该URL包含希腊字符,则它不起作用,并返回“ HTTP错误400。请求URL无效”。

我进行了大量搜索, 解决方案是使用以下命令:

$url = mb_convert_encoding($url, "iso-8859-7", "UTF-8");

下面是一个完整的示例:

$ch = curl_init(); 
$url = mb_convert_encoding($url, "iso-8859-7", "UTF-8");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_HEADER, true);
$page = curl_exec($ch); 
curl_close($ch);

该网页的原始编码是什么? 您能给我们网址和部分源代码吗?

尝试将字符串转换为请求的字符编码

$response = html_entity_decode(htmlentities(curl_exec($ch)), ENT_COMPAT, 'UTF-8'); 
$response = iconv('windows-1253','utf-8',$response );  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM