1

///

編集:さらに調査を行ったところ、デフォルトのエンコーディングの変更に関してこれが見つかりました。実行時に変更することは可能ですが、defaultCharacterEncodingはコードではなくプロパティによってのみ変更できるようです。これは私が見つけたいものだと思いますここで、実行時に defaultCharacterEncoding を変更することはできません。

また、システム プロパティ「file.encoding」をプログラムで変更できると考える人もいるかもしれません。ただし、JVM の開始後は、この値に依存するすべてのシステム クラスがすでにキャッシュされているため、これを設定することはできません。

ソース: http://www.philvarner.com/blog/2009/10/24/unicode-in-Java-default-charset-part-4/

この情報を正しく解釈していますか?

///

私の問題はこのユーザーが抱えていたものと似ていますが、そこに提示された解決策はどれも私の問題に適用できないようです:

netbeans で実行すると特殊文字が正しく表示されるが、「jar」ファイルを実行すると奇妙な文字が表示される

私のプログラムは、「Français 6A」や「Español 6A」などの特殊文字を含む特定の名前をドロップダウン JOptionPane InputDialog ウィンドウに表示します。

これら 2 つの名前は、次のように、IDE でプログラムを実行したときに正しく表示される名前の例です。

ダイアログ - IDE から実行する場合

しかし、JAR ファイルからプログラムを実行すると、次のようになります。

ダイアログ - JAR から実行する場合

上記のウィンドウを作成するコードは次のとおりです。

JOptionPane.showInputDialog(
    null,
    "Please choose which class you have. If none of these are correct hit cancel",
    "Class Website Choice",
    JOptionPane.QUESTION_MESSAGE,
    null,
    dirtyLinks,
    dirtyLinks[0]);

これは、dirtyLinks 配列のコードです。

String[] dirtyLinks = new String[dirtyClasses.length];

これは、dirtyLinks が文字列で埋められるコードです。

for (ClassWebsite link : dirtyClasses) {
    System.out.println(i);
    dirtyLinks[i++] = link.getName();
}

これは ClassWebsite クラスのコードです

public class ClassWebsite {
    private String selfLink = "";
    private String className = "";
    private int distance = 0;
    public ClassWebsite(String className, String selfLink, int distance) {
        this.className = className;
        this.selfLink = selfLink;
        this.distance = distance;
    }
    public int getDistance() {
        return distance;
    }
    public String getLink() {
        return selfLink;
    }
    public String getName() {
        return className;
    }
}

dirtyClasses ClassWebsite オブジェクトの配列

上記の質問への回答を読むと、エンコーディングを UTF-8 に変更する必要があるようですが、プログラムでこれを行う方法や場所がわかりません。さらにコードが必要な場合は、お知らせください。

4

0 に答える 0