【问题标题】:Java: Runtime.getRuntime().exec() passes arguments in unicode when it shouldn'tJava:Runtime.getRuntime().exec() 在不应该时以 unicode 传递参数
【发布时间】:2011-06-17 03:15:12
【问题描述】:

我的问题最好用一个例子来解释: 以下程序在尚未采用 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() 中传递参数?

【问题讨论】:

  • “什么时候不应该” - 不是那么多余。您是否希望它错误地通过它们。 ;) 您是否检查过 netbeans 如何保存您的文件? Netbeans 使用 javac 进行编译,因此它应该编译相同。
  • 彼得:谢谢,更正了标题。我会检查 Netbeans 是否创建了相同的类文件,我猜是这样。
  • 检查过了。从 Netbeans 运行会产生错误的结果。在命令行中运行相同的类文件(由 Netbeans 构建)会生成正确的结果。

标签: java linux unicode netbeans character-encoding


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-01-16
    • 2011-03-26
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多