Windows上的Java Runtime Exec在参数中使用Unicode失败

Bea*_*ear 6 windows unicode runtime.exec

我想启动浏览器并使用Java的Runtime exec加载网页.确切的调用如下所示:

String[] explorer = {"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE", 
    "-noframemerging", 
    "C:\\ ... path containing unicode chars ... \\Main.html"};
Runtime.getRuntime().exec(explorer);
Run Code Online (Sandbox Code Playgroud)

在我的例子中,路径包含"\u65E5\u672C\u8A9E",字符日本语.

显然这是一个java bug:http: //bugs.sun.com/bugdatabase/view_bug.do?video_id = 4947220

我的问题是:是否有可行的解决方法可以单独使用Java完成?看来可以为此编写一个JNI库,但是如果可能的话我想避免使用它.我尝试将路径URI编码为ascii并将命令写入批处理文件,但没有成功.

Bea*_*ear 0

这是我考虑的两个解决方案,每个都或多或少是解决方法:

  1. 创建一个临时 html 重定向文件,该文件会将浏览器重定向到正确的页面。请注意,IE 期望本地文件使用未编码的 unicode,而其他浏览器可能只接受 uri 编码的文件路径

  2. 使用 Windows 文件的短文件名。它不会包含 unicode 字符。