0

我在一个字符串中有一个不幸的是外来字符的 url。当我将它们发送到 curl_setopt ($go, CURLOPT_URL, $url) 时,没有任何反应,命令没有运行。另一方面,当我使用我的 chrome 浏览器并复制链接位置时,它有外来字符并突然将它们粘贴到浏览器上,外来字符被编码为 %20%D5%F0%EF%EB%EF%E3 %E9%F3%F4%DD%F2 ,我知道 %20 代表空格 .. 这个转换后的字符串适用于 curl 命令 使用过 urlencode , iconv 但还没有找到正确的方法。结果与粘贴的不匹配。有什么功能可以做到吗?字符是希腊语。非常感谢

4

2 回答 2

1

我有同样的问题。

当我运行 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);
于 2014-01-10T18:43:04.977 回答
0

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

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

$response = html_entity_decode(htmlentities(curl_exec($ch)), ENT_COMPAT, 'UTF-8'); 
$response = iconv('windows-1253','utf-8',$response );  
于 2012-04-28T08:04:47.330 回答