/ / UTF-8文字の処理、Java - Java、メイバン、ユニコード、エンコーディング、utf-8

utf-8文字で作業する、Java - java、maven、unicode、encoding、utf-8

私の基本的なコードは、パスに基づいてファイルの終了をチェックしようとしていますが、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>

しかし、何も起こらなかった。

助けてください。

回答:

回答№1は1

正確には、ファイルエンコーディングではなく入力エンコーディングは必要ありません。したがって、文字コードを指定することができます。 Scanner を使用して Scanner(InputStream source, String charsetName) コンストラクタ:

Scanner scanner = new Scanner(System.in, "utf-8");