【问题标题】:Unable to read from file name in java which contains internationalized characters in its path无法读取路径中包含国际化字符的 java 中的文件名
【发布时间】:2012-04-19 04:39:20
【问题描述】:

如果使用 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());
    ...

FileNotFoundException 失败

【问题讨论】:

  • 您使用的是哪个文件系统?如果它与JFileChooser一起工作,那么编写一个程序并输出JFileChooser实例读取的路径并检查它是否相同。
  • 不确定这是否能解决问题,但您需要转义 \,因此文件名将是 teststring = "C:\\テスト\\sample.txt"

标签: java file ascii


【解决方案1】:

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

 System.out.println(teststring);

可能不会打印テスト

默认情况下,编码是平台编码。如果你的文件保存为 UTF-8,你可以编译

javac -encoding UTF-8 YourClass.java

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

编辑:

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

【讨论】:

    【解决方案2】:

    非常感谢您的帮助。除了您的解决方案之外,以下更改已解决问题

    ...
    File file = new File(new String(teststring.getBytes(),"utf8");
    ...
    

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 2011-08-23
      • 2018-07-08
      • 1970-01-01
      相关资源
      最近更新 更多