[英]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.