Java: Runtime.getRuntime (). Exec () передает аргументы в юникоде, когда это не должно - PullRequest
5 голосов
/ 28 января 2011

Моя проблема лучше всего объясняется на примере: Следующая программа запускается в системе Linux, которая не в режиме Unicode, но в ISO-8859-15. Среда настроена следующим образом: LC_CTYPE=de_DE@euro

import java.io.*;
import java.util.*;

public class UnicodeTest {
    public static void main(String[] args) throws Exception {
            Runtime.getRuntime().exec(new String[] { "foobar", "äöü" });
    }
}

Когда я компилирую эту программу в командной строке с использованием javac и запускаю ее, foobar правильно получает аргумент äöü в ISO-8859-1. Эта же программа, запускаемая из Netbeans, передает аргумент как Unicode, что делает его непригодным для использования в вызываемой программе. То же самое происходит в Tomcat, когда вызывается этот метод. Какой параметр или переменная среды использует Java, чтобы определить, как передавать аргументы в Runtime.exec()?

1 Ответ

1 голос
/ 28 января 2011

Нашел это.Поведение контролируется системным свойством file.encoding.NetBeans устанавливает его в UTF-8.В командной строке это ISO-8859-15.

...