如何在URI中使用排除的分隔符

时间:2011-10-28 10:15:07

标签: java http url

我需要通过提供包含分隔符的表示来创建java URL对象,该分隔符不包括在US_ASCII字符中。您可以在此处找到2.4.3. Excluded US-ASCII Characters

例如,

http://localhost:8182/a%image.tif

http://localhost:8182/a#image.tif

有人知道解决方法吗?

2 个答案:

答案 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,将被视为片段。但是如果哈希字符是路径的一部分,它当然也必须编码。