发布日期:2018-03-26
Java中用URL查询字符串参数的编码+ 查看更多
Java中用URL查询字符串参数的编码
+ 查看更多
发布日期:2018-03-10 10:49
分类:JAVA
浏览次数:383
我有一个网址
http://example.com/query?q=我还有一个用户输入的查询,如:
random word £500 bank $我想要结果是一个正确恰当的URL编码:
http://example.com/query?q=random%20word%20%A3500%20bank%20%24
实现这个的最好的方法是? 我尝试过URLEncoder和创建URI/URL对象,但没有一个能正确实现。
回答:
URLEncoder应该是正确的方法。 您只需要记住只对单个查询字符串参数名称和/或值,而不是整个URL进行编码,确保不要查询字符串参数分隔符字符和参数名称 - 值分隔符字符=。
String q = "random word £500 bank $"; String url = "http://example.com/query?q=" + URLEncoder.encode(q, "UTF-8");
注意查询参数中的空格是由+表示,而不是%20表示,这是合法有效的。%20通常用于表示URI本身(URI查询字符串分隔符之前的部分?)中的空格,而不是查询字符串(后面的部分—)。
还要注意有两个encode()方法。一个没有charset参数和另一个。 没有charset参数的一个不推荐使用。不要使用它,并且始终指定charset参数。javadoc甚至明确地建议使用UTF-8编码,如RFC3986和W3C所要求的。
所有其他字符都是不安全的,并且首先使用某种编码方案转换为一个或多个字节。 然后每个字节由3个字符的字符串“%xy”表示,其中xy是字节的两位十六进制表示。 建议使用的编码方案是UTF-8。 但是,出于兼容性原因,如果未指定编码,则使用平台的默认编码。