我的问题最好在一个示例中进行解释:以下程序在非Unicode模式的Linux系统上运行,但是在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也会发生同样的情况。 哪个设置或环境variables使用Java来确定如何在Runtime.exec()
传递参数?
找到了。 行为由系统属性file.encoding
。 Netbeans将其设置为UTF-8。 在命令行中,它是ISO-8859-15
。