簡體   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