Mac上的JFileChooser看不到中文字符命名的文件?

在Intellij中运行时程序工作正常(它可以看到中文命名文件)。

我把它构建成.jar文件。 执行jar并且JFileChooser无法看到那些文件。

我在Windows中尝试了jar,它完全正常。

这适用于Mac OS X 10.8.2上的文件:

 import java.io.File; import javax.swing.JFileChooser; public class JFileChooserTest { public static void main(String[] args) { System.out.println("file.encoding=" + System.getProperty("file.encoding")); String path; if(args.length > 0) path = args[0]; else path = System.getProperty("user.dir", "."); File dir = new File(path); JFileChooser jfc = new JFileChooser(dir); int result = jfc.showOpenDialog(null); switch(result) { case JFileChooser.CANCEL_OPTION: System.out.println("User cancelled OPEN dialog."); break; case JFileChooser.APPROVE_OPTION: System.out.println("User chose file: " + jfc.getSelectedFile()); break; case JFileChooser.ERROR_OPTION: System.out.println("User encountered an error"); break; default: System.out.println("Confused"); break; } System.exit(0); } } 

这是一个示例运行:

 $ java -showversion JFileChooserTest java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) file.encoding=UTF-8 User chose file: /.../测试文件.txt 

这是另一个示例运行:

 $ java -showversion -Dfile.encoding=ISO-8859-1 JFileChooserTest java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) file.encoding=ISO-8859-1 User chose file: /.../????.txt 

在这两种情况下,文件选择对话框都正确显示了文件的名称(测试文件.txt)。

请注意,使用java.awt.FileDialog将获得大多数Mac OS用户习惯看到的特定于平台的文件对话框。 虽然它不是严格的Swing(并且具有非常小的function集),但它可能优于JFileChooser ,例如OPEN和SAVE对话框。 (它还显示中文字符在我的系统上没有问题)。