1

System.setProperty( "file.encoding"、 "utf-8");

以下のコメントは、同じJVMで実行されているすべてのアプリのfile.encodingが変更されることを意味しますが、この種の動作は観察されません。

システムプロパティをプログラムで設定すると、同じJVM内で実行されているすべてのコードに影響します。これは、特にそのような低レベルのシステムプロパティについて説明する場合に危険です。

この質問を読み、キャッシュとJava 1.5
のデフォルトのJava文字エンコードの設定には多くの問題があることを理解しましたか?

次のコードを検討してください。

public class FileEncodingTest {
    public static void main (String[] args) {
        System.out.println(System.getProperty("file.encoding"));
        System.setProperty("file.encoding", "UTF-8");
        System.out.println(System.getProperty("file.encoding"));
    }
}

次に、プロジェクト構成で設定されたEclipseとJava1.6を使用してjarファイルを作成します。
次に、Java 1.7でjarファイルを実行すると、これはすべてWindows7で発生します。

java -jar FileEncodingTest.jar
Cp1251
UTF-8

java -jar FileEncodingTest.jar
Cp1251
UTF-8

では、誰が、そしてなぜの値をリセットするのfile.encodingですCp1251か?

UPD: 誰でも、JVM、入力時にプロセスに関して何が起こるかを段階的に説明するリンクを説明または提供できますjava -jar MyClass.jarか?

4

2 に答える 2

1

2つのVMを開始しました。各「java-jar」コマンドで1つ。

Eclipseでプロジェクトのプロパティを編集することにより、プロジェクトが使用するエンコーディングを変更できます。

ただし、ファイル形式に依存するものをハードコーディングし、別のプロジェクトが実装を使用する場合、問題が発生することに注意してください。それがコメントの意味です。

于 2012-11-29T08:35:41.900 に答える
1

IEブラウザを開くのと同じように、最初はホームページに移動します。別のWebサイトにアクセスしてから、別のIEを開くと、それは引き続きホームページになります。JVMは非常に似ています。Javaプログラムの2つの異なるプロセスは、異なるJVMを使用します。これは、プログラムが終了すると、file-encodingプロパティが再びデフォルトになることを意味します。

于 2012-11-29T09:27:19.963 に答える