如果我将以下网址直接粘贴到我的IE地址栏中,它的效果非常好:
它会将一些中文新闻页面翻译成英文新闻页面。
但如果我在Java程序中调用此地址,如:
Process q=Runtime.getRuntime().exec(
"cmd /c start http://translate.google.cn/translate?hl=zh-CN&sl=zh-CN&tl=en&u=http%3A%2F%2Fnews.baidu.com%2Fns%3Fword%3D%25B0%25C2%25B0%25CD%25C2%25ED");
它只会返回Google翻译主页。
不知道那里出了什么问题。
如果您帮助我如何实现这一点(通过在Java程序中提供URL来打开Google翻译结果页面),那就太棒了。
非常感谢。
答案 0 :(得分:4)
&
字符是shell的特殊字符。请尝试引用参数:
Process q=Runtime.getRuntime().exec(
"cmd /c start \"\" \"http://translate.google.cn/translate?hl=zh-CN&sl=zh-CN&tl=en&u=http%3A%2F%2Fnews.baidu.com%2Fns%3Fword%3D%25B0%25C2%25B0%25CD%25C2%25ED\"");
注意参数前面的空引号;它们是start
所必需的。
顺便说一句,您可以通过将命令行复制到命令行并观察结果来轻松地尝试命令行是否正常工作。在您的情况下,它产生了以下内容:
H:>cmd /c start http://translate.google.cn/translate?hl=zh-CN&sl=zh-CN&tl=en&u=http%3A%2F%2Fnews.baidu.com%2Fns%3Fword%3D%25B0%25C2%25B0%25CD%25C2%25ED
'sl' is not recognized as an internal or external command,
operable program or batch file.
'tl' is not recognized as an internal or external command,
operable program or batch file.
'u' is not recognized as an internal or external command,
operable program or batch file.
这给出了关于这里出了什么问题的很好的线索。
但是,如果您使用的是Java 6,则还可以使用browse类的Desktop方法。这也有利于在除Windows之外的其他系统上工作。
答案 1 :(得分:1)
我会说它是因为它是陷害的。尝试右键单击已翻译的页面并以此方式获取URL
答案 2 :(得分:0)
我的猜测是:Google可能会检查用户代理。他们会这样做是为了阻止自动程序和任何DOS攻击。