//
编辑:我做了更多研究,发现关于更改默认编码虽然可以在运行时这样做,但似乎你只能通过属性而不是代码来更改 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 运行程序时正确显示的名称示例,如下所示:
但是当我从 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,但我不知道如何或在我的程序中执行此操作。如果您需要更多代码,请告诉我。