尝试在 Java 中显示阿拉伯字符

J p*_*cos 6 java applet utf-8 arabic character-encoding

我试图在 Java 小程序中显示阿拉伯字符,但我总是得到问号“?????”。

我尝试了很多解决方案,但都没有成功:

我在西班牙语环境中使用 Windows 7。

某些解决方案在运行 Netbeans 时有效,但它们在此环境之外不起作用。这是带有源代码和 .jar 的 Netbeans 项目

这是我正在使用的简单代码:

package javaapplication4;

import java.io.ByteArrayOutputStream;
import java.nio.charset.Charset;
import javax.swing.JApplet;
import javax.swing.JOptionPane;

public class JavaApplication4 extends JApplet{

@Override
public void init(){
    try {

        String str1 = new String("???? ??????? ???? ????? ??? ???".getBytes(), "UTF-8");
        JOptionPane.showMessageDialog(rootPane, str1);

        String str2 = new String("???? ??????? ???? ??");  
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        os.write(str2.getBytes());
        JOptionPane.showMessageDialog(rootPane, os.toString("UTF-8"));

    } catch (Exception ex) {
        JOptionPane.showMessageDialog(rootPane, ex.toString());
    }
}
}
Run Code Online (Sandbox Code Playgroud)

知道发生了什么吗?

Joh*_*ith 2

我原来的答案是错误的: getBytes() 使用系统的默认编码生成一个字节数组,netbeans 将其设置为 UTF-8。

正确答案:根本不要使用 ByteArrayOutputStream 和 new String(byte[], Charset)。仅使用字符串。应该可以正常工作。

编辑:请参阅实际问题的评论以及解决方案为何不完全可能的解释。