[英]Working with UTF-8 characters, Java
我的基本代码试图根据路径检查文件的退出状态,但是它不能处理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
输出:
根据java.io,c:\\ .. jpg不存在
根据java.nio,c:\\ .. jpg不存在
我使用NetBeans,Java 1.8,Maven。
PS :我尝试使用:
运行:
-Dfile.encoding = UTF-8
将followign添加到项目属性中:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
,但没有任何反应。
有什么帮助吗?
准确地说,您不需要文件编码,而需要输入编码。 因此,您可以使用Scanner(InputStream source, String charsetName)
构造函数为Scanner
指定一个字符集:
Scanner scanner = new Scanner(System.in, "UTF-8");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.