【发布时间】:2018-05-17 02:25:55
【问题描述】:
我的基本代码正在尝试根据路径检查文件是否存在,但它无法处理 Unicode 字符:
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
File f = new File(input);
if (f.exists()) {
System.out.println("File is Found, According to java.io");
} else {
System.out.println(f.toString() + " is Not Existed, According to java.io ");
}
Path x = Paths.get(input);
if (Files.exists(x)) {
System.out.println("File is Found, According to java.nio");
} else {
System.out.println(x.toString() + " is Not Existed, According to java.nio");
}
当输入(即文件路径)是 ASCII 时,代码可以正常工作,但是当输入包含 UTF-8 字符时,代码在两者中都失败:
1- 正确打印输入。
2-确定文件是否存在(即即使文件存在,代码也会告诉文件没有退出)
例子:
输入:
c://€.jpg
输出:
c:\�.jpg 不存在,根据 java.io
c:\�.jpg 不存在,根据 java.nio
我使用 NetBeans、Java 1.8、maven。
PS:我试过用:
运行:
-Dfile.encoding=UTF-8
在项目属性中添加以下内容:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
,但什么也没发生。
有什么帮助吗?
【问题讨论】:
-
问题是你需要使用正确的输入编码,所以字符串是正确的。使用调试器检查
input是否包含您在设置时所期望的内容。您可能会感到惊讶。
标签: java maven unicode encoding utf-8