Должностное лицо среды выполнения Java в Windows Fails с Unicode в аргументах

Я хочу запустить браузер и загрузить веб-страницу с помощью должностного лица Java Во время выполнения. Точный вызов похож на это:

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

В моем случае путь содержит "\u65E5\u672C\u8A9E", символы 日本語.

По-видимому, это - ошибка Java: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4947220

Мой вопрос: существует ли жизнеспособное обходное решение, которое может быть сделано только с помощью Java? Кажется, что возможно записать библиотеку JNI для этого, но я хотел бы избежать этого, если это возможно. Я попробовал кодирование URI путь как ASCII и запись команд к пакетному файлу без успеха.

6
задан Kara 6 December 2013 в 06:13
поделиться

2 ответа

Я рассмотрел два решения, каждое из которых является более или менее обходным путем:

  1. Создайте временный файл перенаправления html, который будет перенаправлять браузер на нужную страницу. Обратите внимание, что IE ожидает незашифрованный Unicode для локальных файлов, тогда как другие браузеры могут принимать только пути к файлам в кодировке uri

  2. Используйте короткое имя файла для файла Windows. Он не будет содержать символы Unicode.

0
ответ дан 17 December 2019 в 20:32
поделиться

Думаю, вы можете использовать библиотеку Apache Commons Exec или ProcessBuilder , чтобы попробовать;)

-1
ответ дан 17 December 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: