如果我从 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 脚本中。但这不是我可以在每台计算机上控制的东西。