在MacOSX上使用Eclipse时,无法从Java打开带有特殊字符的文件
嗨,编码问题的朋友们 假设我们有这样一个代码:在MacOSX上使用Eclipse时,无法从Java打开带有特殊字符的文件,java,eclipse,macos,utf-8,Java,Eclipse,Macos,Utf 8,嗨,编码问题的朋友们 假设我们有这样一个代码: import java.awt.Desktop; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; public class UTF8Main { public static void main(String[] args) { try { System.out.println(Sy
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
public class UTF8Main {
public static void main(String[] args) {
try {
System.out.println(System.getProperty("file.encoding"));
System.out.println(Charset.defaultCharset());
File file = new File("Hello World ÄÖÜ.rtf");
Desktop.getDesktop().open(file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
如果我在Mac上从Eclipse运行此命令,我将获得以下输出:
UTF-8
UTF-8
Exception in thread "main" java.lang.IllegalArgumentException: The file: Hello World ÄÖÜ.rtf doesn't exist.
at java.awt.Desktop.checkFileValidation(Desktop.java:209)
at java.awt.Desktop.open(Desktop.java:270)
at UTF8Main.main(UTF8Main.java:16)
如果我从终端运行它,我会得到以下输出
$java -cp ./bin UTF8Main main
UTF-8
UTF-8
…文件将以文本编辑方式打开
从Eclipse在Windows上执行相同的操作
UTF-8
UTF-8
…然后文件打开
从Windows命令
>java -cp ./bin UTF8Main main
Cp1252
windows-1252
…然后文件打开
有人知道吗
我找到了解决办法。在OSX上的Eclipse中,在Preferences->Java->Installed JRE中,我将Java 1.7.0_10作为默认JRE,其中作为Mac终端,Windows Eclipse使用1.7.0_40
因此,将所有开发环境更新到最新的1.7.0_80解决了我的问题。在Mac上,项目编码是什么?另外,运行配置控制台编码是什么?听起来一个或两个不是UTF-8项目编码是UTF-8,运行时编码也是UTF-8(通过设置-Dfile.encoding=UTF-8)。但由于使用这些设置并没有改变任何东西,我在Windows上尝试了同样的设置,并惊讶于它能如预期的那样工作。据我所知,项目编码旨在编码和编译我的*.java文件。file.encoding属性用于解释编译的*.class文件。如果我错了,请纠正我。。。