-1

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 引数を使用した場合にのみ正しく表示されます

4

2 に答える 2