说我有一个URL
http://example.com/query?q=
Run Code Online (Sandbox Code Playgroud)
我有一个用户输入的查询,例如:
随机字500英镑银行$
我希望结果是一个正确编码的URL:
http://example.com/query?q=random%20word%20%A3500%20bank%20%24
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?我尝试URLEncoder
并创建了URI/URL对象,但它们都没有完全正确.
如何编码查询参数以在Java中的URL上进行编码?我知道,这似乎是一个明显的问题.
我不确定有两个细微之处:
笔记:
java.net.URLEncoder.encode
似乎没有用,它似乎是为了提交表单的编码数据.例如,它+
代替空间编码空间%20
,并编码不必要的冒号.java.net.URI
不编码查询参数我想发送一个URI作为查询/矩阵参数的值.在我将它附加到现有URI之前,我需要根据RFC 2396对其进行编码.例如,给定输入:
http://google.com/resource?key=value1 & value2
我期待输出:
http%3a%2f%2fgoogle.com%2fresource%3fkey%3dvalue1%2520%26%2520value2
既java.net.URLEncoder
不会也java.net.URI
不会产生正确的输出.URLEncoder
用于HTML格式编码,与RFC 2396不同.URI
没有一次编码单个值的机制,因此无法知道value1和value2是同一个键的一部分.
我怎么能检查字符串是否已被编码?
例如,如果我编码TEST==
,我得到TEST%3D%3D
.如果我再次编码最后一个字符串,我得到TEST%253D%253D
,如果它已经编码,我必须知道它...
我已经保存了编码参数,我需要搜索它们.我不知道输入参数,它们是什么 - 编码与否,所以我必须知道在搜索之前是否必须对它们进行编码或解码.
String url = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins="+origin+"&destinations="+destination+"&mode=driving&sensor=false&language=en-EN&units=imperial";
url = url.replaceAll(" ", "%20");
Run Code Online (Sandbox Code Playgroud)
输出:
http://maps.googleapis.com/maps/api/distancematrix/xml?origins=150%20Sutter%20St%20San%20Francisco,%20CA,%20United%20States&destinations=1%20Palmer%20Sq%20E
Princeton,%20NJ%2008542&mode=driving&sensor=false&language=en-EN&units=imperial
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误说:
java.net.MalformedURLException: Illegal character in URL
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗 ..
你如何正确编码包含哈希(#)的路径?请注意,散列不是片段(书签?)指示符,而是路径名称的一部分.
例如,如果有这样的路径:
http://www.contoso.com/code/c#/somecode.cs
例如,尝试执行此操作时会导致问题:
Uri myUri = new Uri("http://www.contoso.com/code/c#/somecode.cs");
Run Code Online (Sandbox Code Playgroud)
它似乎将哈希解释为片段指示符.
用%23手动替换#感觉不对.是否还有其他角色需要更换?在Uri和HttpUtility中有一些转义方法,但似乎都没有.
我想为我的网站创建一个编码的URL.例如,对于此网址:" http://google.com/index.html "
我想通过URL编码将此URL提供给客户端.
如何解析动态字符串值以创建URL实例?我需要用空格%20
,重音符号,非ASCII字符替换空格......?
我尝试使用,URLEncoder
但它也编码/
字符,如果我给URLEncoder
URL构造函数编码一个字符串,我得到一个MalformedURLException
(没有协议).
如何使用Play 2在模板中编码URL?
我搜索一个这样的帮手:
<a href="@urlEncode(name)">urlEncode doesn't work now</a>
Run Code Online (Sandbox Code Playgroud)
我找到了一个pull请求,但这似乎不适用于实际的play 2.0.3版本.