Java:Runtime.getRuntime().exec()在unicode中传递参数

Eri*_*ler 5 java linux unicode netbeans character-encoding

我的问题是,在一个例子可以很好地说明:以下程序在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", "äöü" });
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在命令行中使用javac并运行它编译该程序时,在ISO-8859-1中正确foobar获取参数äöü.从Netbeans运行的相同程序将参数传递为Unicode,从而使其在被调用程序中无法使用.调用该方法时,Tomcat也会发生同样的情况.哪个设置或环境变量使用Java来确定如何传递参数Runtime.exec()

Eri*_*ler 1

找到了。该行为由系统属性控制file.encoding。Netbeans 将其设置为 UTF-8。在命令行中,它是ISO-8859-15.