[英]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.