Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MacOSX上使用Eclipse时,无法从Java打开带有特殊字符的文件_Java_Eclipse_Macos_Utf 8 - Fatal编程技术网

在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
…然后文件打开

有人知道吗

  • 如何在Mac上的Eclipse上工作
  • 为什么Windows Eclipse将UTF-8打印到控制台(可选,只是为了了解发生了什么)

  • 我找到了解决办法。在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文件。如果我错了,请纠正我。。。