Eclipse IDE からプロセスを起動すると、VM 引数として渡された Unicode 文字列を読み取ることができません。
例えば:
ArrayList<String> commands = new ArrayList<>();
commands.add("java");
commands.add("-classpath");
commands.add("bin");
commands.add("-Dprop=ÁÉÍÓÚ");
commands.add("test.ReadProp");
ProcessBuilder pb = new ProcessBuilder(commands);
Process process = pb.start();
BufferedReader in;
String line;
in = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = in.readLine()) != null)
System.out.println(line);
test.ReadProp を使用
String prop = System.getProperty("prop");
System.out.println("prop: " + prop);
結果は
prop: ??????????
LANG
唯一の解決策は、この方法で環境変数を強制するようです
pb.environment().put("LANG", "it_IT.UTF-8");
より良い解決策はありますか?よりポータブル?
20:30更新
LANG=it_IT.UTF-8
別の解決策は、Eclipse プロセスを起動する BASH スクリプトに環境を追加することのようです。しかし、すべてのコンピューターで制御できるものではありません。