Java 在jar文件上运行时,我的应用程序中未显示Unicode

Java 在jar文件上运行时,我的应用程序中未显示Unicode,java,netbeans,unicode,Java,Netbeans,Unicode,我构建了一个JavaGUI应用程序,并使用Unicode文本创建了一些jLabel。当我从NetBeans IDE运行应用程序时,文本显示为正确的形式,但当我从.jar文件运行时,文本显示为变形的形式 我的代码: try { jLabel1.setText(new String("ژمارا ناسنامی".getBytes(), "UTF-8")); } catch (UnsupportedEncodingException ex) { Logger.getLogger(da

我构建了一个JavaGUI应用程序,并使用Unicode文本创建了一些
jLabel
。当我从NetBeans IDE运行应用程序时,文本显示为正确的形式,但当我从
.jar
文件运行时,文本显示为变形的形式

我的代码:

try {
    jLabel1.setText(new String("ژمارا ناسنامی".getBytes(), "UTF-8"));
} catch (UnsupportedEncodingException ex) {
    Logger.getLogger(dataEntry.class.getName()).log(Level.SEVERE, null, ex);
}
输出:

try {
    jLabel1.setText(new String("ژمارا ناسنامی".getBytes(), "UTF-8"));
} catch (UnsupportedEncodingException ex) {
    Logger.getLogger(dataEntry.class.getName()).log(Level.SEVERE, null, ex);
}

请仅尝试以下操作:

jLabel1.setText("ژمارا ناسنامی");
实际上,这里的错误是首先使用
getBytes()对
字符串进行编码
使用默认编码,然后将其解码为
UTF-8
,这是不正确的,因为您依赖的默认编码不可能是
UTF-8
,并且没有用,因为
字符串
已经是
UTF-16
编码,因此它已经包含了阿拉伯字符

下面是该方法的Javadoc作为提醒:

使用平台的 默认字符集,将结果存储到新的字节数组中。这个 当此字符串无法在中编码时,此方法的行为 默认字符集未指定。CharsetEncoder类应该是 当需要对编码过程进行更多控制时使用

如果要正确编码
字符串
,则需要使用或。但再一次,在这种特殊情况下甚至不需要它。

请仅尝试以下操作:

jLabel1.setText("ژمارا ناسنامی");
实际上,这里的错误是首先使用
getBytes()对
字符串进行编码
使用默认编码,然后将其解码为
UTF-8
,这是不正确的,因为您依赖的默认编码不可能是
UTF-8
,并且没有用,因为
字符串
已经是
UTF-16
编码,因此它已经包含了阿拉伯字符

下面是该方法的Javadoc作为提醒:

使用平台的 默认字符集,将结果存储到新的字节数组中。这个 当此字符串无法在中编码时,此方法的行为 默认字符集未指定。CharsetEncoder类应该是 当需要对编码过程进行更多控制时使用

如果要正确编码
字符串
,则需要使用或。但再一次,在这种特殊情况下甚至不需要它