在Windows中使用非ASCII字符串的Runtime.getRuntime()。exec()?

时间:2009-11-20 14:23:42

标签: java encoding runtime.exec

尝试以下方法打开阿拉伯语网址:

  String cmd = "cmd.exe /C start \"Open file\" \"http://ar.wikipedia.org/wiki/موسوعة\"";
  Runtime.getRuntime().exec( cmd );

不幸的是,正在打开的网址是http://ar.wikipedia.org/wiki/??????

关于为什么会这样或者我如何阻止这种情况的任何想法?


在你问为什么我不使用java.awt.Desktop.getDesktop()。open()之前,这是因为这个Sun bug:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6457572

1 个答案:

答案 0 :(得分:3)

如果您希望此特定示例正常工作 - 即打开包含UTF-8的网址,请尝试以下操作:


String params = URLEncoder.encode("موسوعة", "utf-8");
String cmd = "cmd.exe /C start \"Open file\" \"http://ar.wikipedia.org/wiki/" + params + "\"";
Runtime.getRuntime().exec(cmd);