file_get_contents – специальные символы в URL-адресе

Я пытаюсь получить изображения с удаленного сервера с помощью file_get_contents . URL-адрес изображения может содержать пробелы и / или специальные символы, такие как ý, á, í и т. Д., И когда он выполняет операцию с кодом HTTP 400 – Bad Request. Если я попытаюсь закодировать url (или сегменты этого URL), используя urlencode или rawurlencode , я получаю 404.

Когда URL-адрес изображения не содержит пробелов или специальных символов, он загружается без проблем.

У меня есть догадка, что это имеет какое-то отношение к кодированию, но я просто не могу понять это. Есть ли способ кодирования, который мне не хватает? Есть ли заголовок, который должен быть установлен для запроса?

Проблема с file_get_contents – это кодировка UTF-8 (еще не реализована на PHP). Если вы хотите загрузить файл с помощью этой функции, вам нужно сделать что-то подобное на своем URL-адресе:

$url_utf8 = rawurlencode(utf8_encode($url));

И после:

$content = file_get_contents($url_utf8);