1

//

编辑:我做了更多研究,发现关于更改默认编码虽然可以在运行时这样做,但似乎你只能通过属性而不是代码来更改 defaultCharacterEncoding,我认为这是我想要找到的这里 defaultCharacterEncoding 在运行时不能更改:

此外,人们可能认为他们可以通过编程方式更改系统属性“file.encoding”。但是,在 JVM 启动后无法设置,因为到那时所有依赖此值的系统类都已经缓存了它。

来源: http ://www.philvarner.com/blog/2009/10/24/unicode-in-java-default-charset-part-4/

我是否正确解释了这些信息?

//

我的问题与该用户遇到的问题相似,但那里提供的解决方案似乎都不适用于我的问题:

在 netbeans 中运行时的特殊字符正确显示,但在运行“jar”文件时出现奇怪的字符

我的程序在下拉 JOptionPane InputDialog 窗口中显示带有特殊字符的某些名称,例如“Français 6A”或“Español 6A”。

这两个名称是我通过 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