如果在其他地方得到了解答,我很抱歉,但我已经尝试过向我寻找类似的问题,但无法找到它。
我会尽量保持简单。我使用一些很好的遗留代码,当用户单击Swing按钮时,带有所选参数(两个名称)的URL将发送到打开Internet Explorer的ProcessBuilder()
。该URL包含两个引号("),名称包含斯堪的纳维亚字符。问题是这些字母变成了问号而没有匹配,因此用户必须再次搜索相同的名称。
我使用URLEncoder()
作为名称和引号(必须在那里让网站获得任何结果)到UTF-8。当我使用ProcessBuilder(ie_explorer, encodedString).start()
时,它仍然无法工作。但是,它适用于Chrome!
据我了解,ProcessBuilder
将网址发送到cmd。所以在cmd中,我编写了每个程序(IE和Chrome)的路径并发送了适用于Chrome的URL。显然Chrome会返回结果,但IE不会编码或不编码。
我在命令提示符窗口中写了chcp
,结果是850.
遗憾的是,让用户全部使用Chrome都不是一个可以接受的解决方案。我必须让IE工作。所以我转向你们,希望得到帮助。
我应该采用什么样的编码来使cmd + IE对URL感到满意?
我应该以除ProcessBuilder
以外的其他方式打开IE吗?
我非常感谢所有帮助和答案!
PS:如果有帮助,浏览器版本是Internet Explorer 11和Google Chrome 55.0
编辑1:按照说明并创建了一个运行而不是IE / Chrome的bat文件,它仍然是带有编码引号和斯堪的纳维亚字符的长URL。所以输出就是"命令+ url"所以(为了安全起见,我只是包含了URL的结尾):
"X\X\X\Desktop\test.bat" "Action=Navigate&col1=%22D+Vy%22.%22Organisation%22&val1=%22LFC+S%C3%B6dert%C3%A4lje+%280181%29%22&col2=%22D+Vy%22.%22Vy%22&val2=%22Test+f%C3%B6r+V%C3%A4ster%C3%A5s%22"
奇怪的是,当我将bat文件中的长URL粘贴到IE中时,它无法正常工作。我刚到网站但没有结果。但如果我再次粘贴它,它就可以了!所有漂亮的刻字和结果和所有。在IE中输入两次URL之前我没有意识到这一点,这给了我正确的结果。
编辑2:在非常感谢帮助后,我查看了在任务管理器中发送的内容,这似乎与" IEXPLORE.EXE"打开了。但是,在发送到ProcessBuilder
之前,我在日志中打印的URL与任务管理器中的命令之间存在差异。由于某些原因,URL似乎被切断了,因为没有val2
!
编辑3 +解决方案:我怀疑编辑2问题是由于字符数量有限,因为我的网址很长。对于那些想知道我做了什么使其全部工作的人:我从ProcessBuilder()更改为另一个解决方案,插入下面,这使得一切正常。现在我只需弄清楚为什么我需要输入两次URL以获得正确的结果。
Desktop.getDesktop()。browse(new URL(urlStr).toURI());