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 ...
在Oracle的帮助下,我们发现了一种解决方法:环境变量LC_CTYPE未设置UTF-8在Eclipse中(以及从JNLP或其他任何地方开始时).这解释了为什么代码在终端上工作,因为默认情况下OS X终端"设置语言环境变量"(一个可以关闭的选项,然后即使在终端中也会遇到与上面相同的问题).
在启动器中设置此环境变量解决了该问题.
我仍然认为这是Java 7的一个错误,因为即使没有这个变量,Java 6仍然可以工作.
| 归档时间: |
|
| 查看次数: |
1394 次 |
| 最近记录: |