有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有以下代码:

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());
    }
}

在我的文档文件夹中,我有一个名为“öß.pdf”的文件。以下是Java 6下的输出:

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

但以下是Java 7下的输出:

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

请特别注意file.exists返回false的文件是listFiles!! 有什么好处?有办法解决这个问题吗?这看起来很像Java7的bug


共 (1) 个答案

  1. # 1 楼答案

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

    在启动器中设置这个环境变量可以解决这个问题

    我仍然认为这是java 7的一个bug,因为java 6即使没有这个变量也仍然工作。