如果我从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");
有更好的解决方案吗? 更便携?
另一种解决方案似乎是将环境LANG=it_IT.UTF-8
添加到启动Eclipse进程的BASH脚本中。但这并不是我可以在每台计算机上控制的东西。
答案 0 :(得分:0)
将-Dfile.encoding=UTF8
传递给JVM。
答案 1 :(得分:0)
我在Windows 10中使用Eclipse版本:2019-09 R(4.13.0),对我有用的是:
控制面板->区域设置->管理标签->更改系统区域设置...
并设置我要使用的特定语言(在我的情况下是希腊语)
激活Beta功能会使事情搞砸,所以我的设置是关闭