Java - 阿拉伯字符无法正确显示

时间:2014-11-20 06:29:40

标签: java fonts combinations arabic urdu

在阿拉伯语中,字母采用不同的形式,取决于它们形成组合词的位置(类似于草书)。但是,Java正在不正确地显示一些单词。他们似乎采取了正确的形式,但没有正确组合。这是JOptionPane.showMessageDialog

的结果

[1](编辑:下面的链接,低代表不允许我添加图片)

这些字母是从左到右书写的M-S-J-D - 并注意到最后两个J和D实际上是组合的。来自مp

这是使用Urdu排版字体在NotePad中编写的正确格式(与我在程序中使用的字体相同) )。

[2](编辑:以下链接)

起初我以为是因为键盘上的字母与unicode(\ uXXXX)转义命令不同;特别是因为你可以看到每个字母在组合时不会采用完全相同的形状。我使用键盘的Urdu设置键入NotePad,这在JCreator中不起作用;我正在使用转义命令。

然而,我查找了键盘的乌尔都语设置的unicode,它们与我在JCreator中使用的代码完全相同。然后我尝试使用Netbeans因为它以UTF-8编码(JCreator使用Cp1252),这次我直接在代码中输入字母而不是使用escape命令,并在上面的第一张图片中得到完全相同的结果。

并非所有单词都有这种行为。 Babaبابا 正确结合。

为什么Java没有正确组合这些单词,我该如何解决?提前谢谢!

[1] http://i.stack.imgur.com/HEj9y.png   [2] http://i.stack.imgur.com/TOUPF.png

编辑:哦,这是字符串,以及我用来设置字体的代码:

javax.swing.UIManager.put("OptionPane.messageFont", new Font("Urdu Typesetting", Font.PLAIN, 60));
JOptionPane.showMessageDialog(null,"\n\u0645\u0633\u062C\u062F");

1 个答案:

答案 0 :(得分:0)

我不知道阿拉伯语:)虽然在我的电脑上代码

import java.awt.Font;
import javax.swing.JOptionPane;

public class TestArabic
{

    public static void main(String[] args)
    {
        javax.swing.UIManager.put("OptionPane.messageFont", new Font("Urdu Typesetting", Font.PLAIN, 60));
        JOptionPane.showMessageDialog(null,"\n\u0645\u0633\u062C\u062F");
    }    
}

生成以下结果enter image description here

让我们看看它在arabic keyboard上为m s j d enter image description here看到了什么,而对于msjd,它是enter image description here。它与JOptionPane.showMessageDialog相同。

相关问题