4

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 スクリプトに環境を追加することのようです。しかし、すべてのコンピューターで制御できるものではありません。

4

2 に答える 2

1

-Dfile.encoding=UTF8JVM に渡します。

于 2013-02-03T18:53:02.710 に答える