无法从java中的文件名读取,其中包含路径中的国际化字符

Kir*_*ran 4 java ascii file

如果使用JFileChooser对话框选择了相同的文件,它可以正常工作

路径类似于C:\テスト\ sample.txt

以下代码不起作用

    String teststring = "C:\\???\\sample.txt";
    File file = new File(teststring);

    BufferedReader reader = new BufferedReader(new FileReader(file));
    System.out.println(reader.readLine());
    ...
Run Code Online (Sandbox Code Playgroud)

它因FileNotFoundException而失败

ben*_*y23 8

问题很可能是在编译Java时,它编译的编码与テスト字符的文件编码不匹配.您可以通过插入来检查

 System.out.println(teststring);
Run Code Online (Sandbox Code Playgroud)

这可能不会打印テスト

默认情况下,编码是平台编码.如果您的文件保存为UTF-8,则可以使用

javac -encoding UTF-8 YourClass.java
Run Code Online (Sandbox Code Playgroud)

(或在Ant中使用encoding="UTF-8"您的<javac>任务的属性

编辑:

正如@assylias指出的那样,反斜杠需要被转义!