我需要通过提供包含分隔符的表示来创建java URL对象,该分隔符不包括在US_ASCII字符中。您可以在此处找到2.4.3. Excluded US-ASCII Characters。
例如,
http://localhost:8182/a%image.tif
或
http://localhost:8182/a#image.tif
有人知道解决方法吗?
答案 0 :(得分:1)
你不能编码这个角色吗?所以#=> %23和%=> %25。查看有关W3Schools
的更多信息答案 1 :(得分:1)
通常,只有在将各个组件组装到最终URI之前对其进行编码,才能安全地构建URI。在这种情况下,a%image.gif
是路径组件,必须根据路径生成进行编码(rfc 2369中的3.3)。
使用java.net.URI
创建合法的URI(和网址):
URI uri = URI.create("http://localhost:8182/a%25image.gif");
System.out.println(uri.toASCIIString());
System.out.println(uri.getPath());
您应该看到最后一个语句的输出未编码。
从技术上讲,第二个URL不是非法的image.gif
,将被视为片段。但是如果哈希字符是路径的一部分,它当然也必须编码。