Java での UTF-8 エンコーディングに問題があります。UTF-8 でエンコードされた .txt ファイルがあります。ファイルが実際に UTF-8 でエンコードされていることを notepad++ で確認しました。ファイルを読み取ろうとしましたが、特殊文字が正しく表示されません。
次の平和なコードを使用します。
try {
Scanner sc = new Scanner(new FileInputStream("file.txt"), "UTF-8");
String str;
while(sc.hasNextLine()) {
str = sc.nextLine();
roadNames.add(str);
System.out.println(str);
}
sc.close();
} catch(IOException e1) {
System.out.println("The file was not found....");
}
デフォルトのエンコーディングをUTF-8に定義したEclipseでは特殊文字が正しく表示されますが、生成されたjarファイルには表示されません。
私にとって実際に機能する唯一のことは、次の引数「java -Dfile.encoding=utf-8 -jar executable.jar」を使用して .bat ファイルを作成することですが、それは良い解決策ではないと思います。
さらに、これも機能します:
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(str);
アップデート
私が言ったら
特殊文字が正しく表示されない
System.out.println は、特殊文字が å ではなく ├à に置き換えられた文字列を出力することを意味します。
それは、
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(str);
結局動作しません - 申し訳ありません。
本当の問題は、テキスト ドキュメントの内容をコンソールに出力させたいということではなく、テキスト ドキュメントの各行に名前が含まれており、この名前が ArrayList に追加されることです。次に、JTextField があり、入力を開始すると、ArrayList 内で最も一致する名前を検索して、入力した内容をオートコンプリートしようとします。JTextField 内の特殊文字が正しく表示されないため、エンコードの問題がなければ、これは完全に機能します。Dfile.encoding=utf-8 引数を使用した場合にのみ正しく表示されます