我使用以下代码在默认浏览器中显示NSE索引。
String downloadURL = "http://in.finance.yahoo.com/q;_ylt=AkieA" +
"_4_rXXRBh2SH7_U3kXyULlG;_ylu=X3oDMTE1Nmc5cjBnBHBvcwMyBHNlY" +
"wNmb290ZXIteWZpbmFuY2UEc2xrA25pZnR5NTA-?s=^NSEI";
java.awt.Desktop myNewBrowserDesktop = java.awt.Desktop.getDesktop();
java.net.URI myNewLocation = new java.net.URI(downloadURL);
myNewBrowserDesktop.browse(myNewLocation);
提到的URL已从雅虎网站本身复制。但是,当我运行代码时,我得到如下错误:
java.net.URISyntaxException:非法 索引140处的查询中的字符: http://in.finance.yahoo.com/q;_ylt=AkieA_4_rXXRBh2SH7_U3kXyULlG;_ylu=X3oDMTE1Nmc5cjBnBHBvcwMyBHNlYwNmb290ZXIteWZpbmFuY2UEc2xrA25pZnR5NTA-?s= ^ NSEI
我不知道出了什么问题;我已经成功地与其他网址做了同样的事情。请帮忙。
答案 0 :(得分:5)
根据此链接:
http://www.blooberry.com/indexdot/html/topics/urlencoding.htm Caret(“^”)属于不安全类别。
“不安全字符”为什么:有些人 人物提出了可能性 被误解为URL中的 很多原因。这些人物 也应该始终编码。
将^
更改为%5E后,它可以正常工作。
现在,如果您从浏览器中复制网址并将其放在另一个浏览器中,那么它就能正常运行。我认为浏览器内部处理special
个字符。但是在java中,java.net.URL
应该与独立应用程序和控制台应用程序一起使用,并且在不同的平台上也是如此,因此,开发人员有责任处理special
个字符的编码。
Google用于基于java的URL编码器。
答案 1 :(得分:0)
我认为你应该对你的字符串进行URL编码:
URI myNewLocation = new URI(URLEncoder.encode(downloadURL, "UTF-8"));