在阿拉伯语中,字母采用不同的形式,取决于它们形成组合词的位置(类似于草书)。但是,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");
答案 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");
}
}
生成以下结果
让我们看看它在arabic keyboard上为m s j d 看到了什么,而对于msjd,它是。它与JOptionPane.showMessageDialog相同。