簡體   English   中英

OS X中Java 7文件名的編碼問題

[英]Encoding issues on Java 7 file names in OS X

我有以下代碼:

public static void main( String[] args ) {
    System.out.println(Locale.getDefault());
    File f = new File("/Users/johngoering/Documents");
    File[] fs = f.listFiles();
    for (File ff : fs) {
        System.out.println(ff.getName());
        System.out.println(ff.exists());
    }
}

在我的Documents文件夾中,有一個名為“öß.pdf”的文件。 這是Java 6下的輸出:

 en_US
 (...)
 öß.pdf
 true
 (...)

但是這是Java 7下的輸出:

 en_US
 (...)
 o����.pdf
 false
 (...)

需特別注意的是file.exists回報false的文件返回由listFiles 是什么賦予了? 有沒有什么辦法解決這一問題? 這似乎很像Java 7錯誤...

在Oracle的幫助下,我們發現了一種解決方法:在Eclipse中(以及從JNLP或其他任何地方啟動時)未將環境變量LC_CTYPE設置為UTF-8 這解釋了代碼在終端上起作用的原因,因為默認情況下OS X終端會“設置區域設置環境變量”(可以關閉此選項,然后即使在終端中也遇到與上面相同的問題)。

在啟動器中設置此環境變量可以解決該問題。

我仍然認為這是Java 7的錯誤,因為即使沒有此變量,Java 6仍然可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM