не удалось создать действительный URL-адрес, если в нем содержатся пробелы - PullRequest
0 голосов
/ 05 мая 2011

Я столкнулся с очень странной ошибкой в ​​Java.Это касается создания URL-адресов, когда они содержат пробелы.Например, эта ссылка: располагающийся лагерем у Кларка

и этот образец фрагмента кода, который воспроизводит ошибку:

String urlEncoded2 = "http%3A//www.sas.usace.army.mil/lakes/thurmond/images/camping+at+clark+2.jpg";

BufferedImage test = ImageIO.read(new URL(URLDecoder.decode(urlEncoded2, "UTF-8")));`

Как видите, переданная строка URL-адреса закодирована в формате UTF-8.Однако, независимо от того, как я это передаю, этот код всегда терпит неудачу.В моем приложении мне нужно иметь возможность читать любой URL-адрес изображения, переданный без исключений.

Заранее благодарен за любую помощь!

1 Ответ

2 голосов
/ 05 мая 2011
"http%3A//www.sas.usace.army.mil/lakes/thurmond/images/camping+at+clark+2.jpg"

Это недействительный URL.

"http://www.sas.usace.army.mil/lakes/thurmond/images/camping at clark 2.jpg"

Это недействительный URL.

Проблема в том, что первое значение просто мусор. Независимо от того, что закодировано это значение, это не правильно, и это должно быть исправлено в источнике.

Правильный URL:

"http://www.sas.usace.army.mil/lakes/thurmond/images/camping%20at%20clark%202.jpg"
...