OS X中Java 7文件名的编码问题

Epa*_*aga 6 java macos encoding file java-7

我有以下代码:

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的Documents文件夹中,我有一个名为"öß.pdf"的文件.这是Java 6下的输出:

 en_US
 (...)
 öß.pdf
 true
 (...)
Run Code Online (Sandbox Code Playgroud)

但这是Java 7下的输出:

 en_US
 (...)
 o????.pdf
 false
 (...)
Run Code Online (Sandbox Code Playgroud)

请特别注意,file.exists返回false的文件返回listFiles!! 是什么赋予了?有没有什么办法解决这一问题?这看起来像Java 7的bug ...

Epa*_*aga 9

在Oracle的帮助下,我们发现了一种解决方法:环境变量LC_CTYPE未设置UTF-8在Eclipse中(以及从JNLP或其他任何地方开始时).这解释了为什么代码在终端上工作,因为默认情况下OS X终端"设置语言环境变量"(一个可以关闭的选项,然后即使在终端中也会遇到与上面相同的问题).

在启动器中设置此环境变量解决了该问题.

我仍然认为这是Java 7的一个错误,因为即使没有这个变量,Java 6仍然可以工作.