Curl devuelve 400 mal pedido (url con espacios)

Cuando uso la biblioteca de curl y trato de obtener una imagen de url, obtengo 400 errores de solicitud errónea. Fundé que el problema es con la codificación de url. Pero en mi caso no funciona, porque mi url, es la ruta a la imagen en el lado del servidor, como

http://example.com/images/products/product 1.jpg

Entiendo que los espacios de usuario en los archivos de nombres son una mala práctica, pero no es mi servidor y no los creé.

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, urlencode($url));
echo $ret = curl_exec($ch);

Cuando uso la función urlencode - curl return http_code = 0

Actualizado

$url = str_replace(' ', '+', $url);

no funciona, el servidor devuelve error 404.

Respuestas a la pregunta(3)

Su respuesta a la pregunta