我最好通过一个例子来解释我的问题:
在一个尚未使用Unicode模式而是使用ISO-8859-15的Linux系统上运行以下程序。环境设置如下: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", "äöü" });
}
}
当我使用命令行编译并运行这个程序时,使用
javac
,foobar
正确地接收了äöü
参数,使用的是ISO-8859-1编码。但是当从Netbeans运行同一个程序时,传递的参数变成了Unicode编码,从而使得被调用程序无法使用。在Tomcat中调用该方法时也会出现相同的情况。Java使用哪个设置或环境变量来确定如何在Runtime.exec()
中传递参数?