System.setProperty( 「file.encoding的」, 「UTF-8」);誰將JVM file.encoding重置爲原始版本?
下面的評論暗示的file.encoding會爲同一個JVM上運行的所有應用程序進行更改,但是,我不遵守這種行爲。
以編程方式設置系統屬性將影響在同一個JVM中運行的所有代碼,這是危險的,特別是在討論這樣的低級系統屬性時。
我已經閱讀了這個問題,並瞭解有與緩存許多問題和Java 1.5
Setting the default Java character encoding?
請,現在考慮下面的代碼:
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"));
}
}
然後,我創建一個jar -file使用在項目配置中設置的Eclipse和Java 1.6。
然後我運行的jar文件與Java 1.7,這一切發生的Windows 7
java -jar FileEncodingTest.jar
Cp1251
UTF-8
java -jar FileEncodingTest.jar
Cp1251
UTF-8
下,那麼是誰,爲什麼重置的file.encoding
值回Cp1251
?
UPD: 任何人都可以解釋或提供一個鏈接,這也解釋了一步一步的什麼JVM方面情況,處理當我輸入java -jar MyClass.jar
?
變化在一個JVM系統屬性不影響其他JVM的。 –
@ThorbjørnRavnAndersen,所以對於每個'java -jar',創建一個單獨的JVM實例? –
對於典型的Oracle/IBM Java發行版,是的。 –