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