2011-01-28 4 views
5

私の問題は次の例で最もよく説明されています。 Linuxシステムで実行されるプログラムは、ではない Unicodeモードそれでもなお、ISO-8859-15にあります。 [email protected]Java:Runtime.getRuntime()。exec()は、ユニコードで引数を渡さないでください。

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で同じことが起こります。 Runtime.exec()で引数を渡す方法を決定するためにJavaを使用する設定変数または環境変数はどれですか?

+0

"そうすべきではない" - それは冗長ではありません。あなたはそれが間違ってそれらを渡したいと思うでしょうか? ;)ネットビーンズがファイルを保存する方法を確認しましたか? Netbeansはjavacを使ってコンパイルを行い、コンパイルする必要があります。 –

+0

Peter:ありがとう、タイトルを修正しました。 Netbeansが同じクラスファイルを作成するかどうかを確認します。 –

+0

それをチェックしました。 Netbeansから実行すると、間違った結果が生成されます。コマンドラインで同じクラスファイル(Netbeansによって構築された)を実行すると、正しい結果が得られます。 –

答えて

1

見つけました。動作はシステムプロパティfile.encodingによって制御されます。 NetbeansはそれをUTF-8に設定します。コマンドラインでは、それはISO-8859-15です。

関連する問題