我正在使用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;
}
如果$url
与http://example.com/image.jpg
类似,我的功能正常,我可以使用返回的html。
如果$url
与http://example.com/imagè.jpg
类似,我的功能无效并打印此行(显然文件存在,我可以在浏览器中看到它!):
cURL error number:22
cURL error:The requested URL returned error: 404 Not Found
答案 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