如果url包含重音字符,则卷曲获得404

时间:2017-01-30 17:06:54

标签: php curl

我正在使用curl以这种方式从url下载图像:

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$html = curl_exec($ch);

if (!$html) {
    echo "<br />cURL error number:" .curl_errno($ch);
    echo "<br />cURL error:" . curl_error($ch);
    return false;
}
else{
    return $html;
}

如果$urlhttp://example.com/image.jpg类似,我的功能正常,我可以使用返回的html。

如果$urlhttp://example.com/imagè.jpg类似,我的功能无效并打印此行(显然文件存在,我可以在浏览器中看到它!):

cURL error number:22
cURL error:The requested URL returned error: 404 Not Found

2 个答案:

答案 0 :(得分:1)

在cURL请求中使用之前,您只需要对URL的图像名称部分进行编码:

$rest_of_the_url = "http://example.com/";
$image_name = "imagè.jpg";
$url = $rest_of_the_url . urlencode($image_name);

答案 1 :(得分:0)

尝试使用UTF8编码功能php