是否存在能正确编码包含unicode字符的URL的Android类?例如:对包含Unicode字符的URL进行编码
Blue Öyster Cult
被转换为下面的使用java.net.URI中:
uri.toString()
(java.lang.String) Blue%20Öyster%20Cult
邻字符不被编码。使用URLEncoder
:
URLEncoder.encode("Blue Öyster Cult", "UTF-8").toString()
(java.lang.String) Blue+%C3%96yster+Cult
它编码太多(即空间变成 “+” 和路径分隔符 “/” 成为%2F)。如果我用Dolphin网络浏览器点击包含unicode字符的链接,它可以正常工作,显然这可以完成。但是,如果我尝试使用任何上述字符串打开HttpURLConnection,我会得到一个HTTP 404 Not Found
异常。
[**后一种方法是正确的**](HTTP:// ideone .com/bAnuL8)'%2F'是一个百分比编码的'/',它不存在于字符串“BlueÖysterCult”中。您正在测试的内容与您应该使用的内容之间存在虚假的断开连接。 – 2013-03-19 22:35:28
@MattBall我不小心粘贴了早期测试(更正后)的%2F。但这也是一个问题。真正的URL是一个完整的HTTP链接,包含我不想编码的斜线。 – 2013-03-19 22:38:46
然后,您需要在构建整个URL字符串之前对组件进行编码。如果你有一个字符串表示一个URL,其中一些部分应该是百分比编码的,而另一些部分则不应该,但已经太晚了。 – 2013-03-19 22:49:50