我的问题最好用一个例子来解释:
以下程序在 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", "äöü" });
}
}
当我在命令行中使用 javac
编译这个程序并运行它时,foobar
在 ISO-8859 中正确获取参数 äöü
-1。从 Netbeans 运行的同一程序将参数作为 Unicode 传递,从而使其在被调用程序中不可用。当调用该方法时,在 Tomcat 中也会发生同样的情况。哪个设置或环境变量使用 Java 来确定如何在 Runtime.exec()
中传递参数?
最佳答案
找到了。该行为由系统属性 file.encoding
控制。 Netbeans 将其设置为 UTF-8。在命令行中,它是 ISO-8859-15
。
关于Java:Runtime.getRuntime().exec() 在不应以 unicode 格式传递参数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4826687/