我在Java中遇到了一个非常奇怪的错误。它涉及在包含空格时构建URL。例如,这个链接: camping at clark
以及此代码片段,它会重现错误:
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编码的。但是,无论我如何传递它,这段代码总是失败。在我的应用程序中,我需要能够阅读传递的任何图像网址而没有排除。
提前感谢您的帮助!
答案 0 :(得分:2)
"http%3A//www.sas.usace.army.mil/lakes/thurmond/images/camping+at+clark+2.jpg"
这不是有效的网址。
"http://www.sas.usace.army.mil/lakes/thurmond/images/camping at clark 2.jpg"
这不是有效的网址。
问题是第一个值只是垃圾。无论编码该值是什么都没有正确完成,这应该在源头修复。
正确的网址是:
"http://www.sas.usace.army.mil/lakes/thurmond/images/camping%20at%20clark%202.jpg"