繁体   English   中英

使用UTF-8字符,Java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM