![](/img/trans.png)
[英]How can I escape reserved URL characters identically from Java and Ruby?
[英]How I can escape URL in Java (docs are not clear)?
我找到了各种帖子,用java.net.URLEncoder.encode
完成Java中的转义。 但是我在URL
docs中找到了:
也可以使用
URLEncoder
和URLDecoder
类,但仅用于HTML表单编码,这与RFC2396中定义的编码方案不同。
有人能解释一下这种情况吗?
您可以使用URI。 例如:
URI uri = new URI("http","google.com","/ a z.html","asd= z%#@@#");
System.out.println(uri.toString());
//returns http://google.com/%20a%20z.html#asd=%20z%25%23@@%23
请注意,单个参数构造函数不会转义字符,因此如果您执行以下操作,它将引发异常:
URI uri = new URI("http://google.com/ a z.html?asd= z%#@@#");
从URI中,您可以通过执行以下操作获取URL:
URL uri.toURL();
该文档正确建议使用URI类。 仍然提到URLEncoder的原因是我猜历史原因URLEncoder自1.0以来一直存在,而在1.4中添加了URI。
URLEncoder,尽管它的名字,用于编码URL 参数或POST参数。
在查询字符串之前正确编码URL的正确方法是通过新URI(null,String,null).toURL()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.