Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-阿拉伯语字符显示不正确_Java_Fonts_Combinations_Arabic_Urdu - Fatal编程技术网

Java-阿拉伯语字符显示不正确

Java-阿拉伯语字符显示不正确,java,fonts,combinations,arabic,urdu,Java,Fonts,Combinations,Arabic,Urdu,在阿拉伯文中,字母的形式不同,这取决于它们构成组合词的位置(类似于草书)。但是,Java不正确地显示了一些单词。它们似乎采用了正确的形式,但没有正确组合。以下是JOptionPane.showMessageDialog的结果 [1] (编辑:下面的链接,low rep不允许我添加图片) 这些字母是从左到右写的M-S-J-D——注意,最后两个J和D实际上是结合在一起的 以下是使用乌尔都语排版字体(与我在程序中使用的字体相同)在记事本中书写时的正确格式 )۔ [2] (编辑:下面的链接) 起初我认为

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

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

这些字母是从左到右写的M-S-J-D——注意,最后两个J和D实际上是结合在一起的

以下是使用乌尔都语排版字体(与我在程序中使用的字体相同)在记事本中书写时的正确格式 )۔

[2] (编辑:下面的链接)

起初我认为这是因为我键盘上的字母与unicode(\uxxx)转义命令不同;特别是因为你可以看到,如果要组合,每个字母的形状并不完全相同。我用键盘上的乌尔都语设置在记事本上打字,而这在JCreator中不起作用;我在使用逃生命令

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

也不是所有的词都有这种行为。巴巴ببب1575; 正确组合

为什么Java不能正确地组合这些词?我如何修复它?提前谢谢

[1] [2]

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

javax.swing.UIManager.put("OptionPane.messageFont", new Font("Urdu Typesetting", Font.PLAIN, 60));
JOptionPane.showMessageDialog(null,"\n\u0645\u0633\u062C\u062F");
我不懂阿拉伯语:)不过在我的电脑上代码

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");
    }    
}
产生以下结果


让我们看看它在msjd和msjd上产生了什么。它与JOptionPane.showMessageDialog中的相同。

没有阿拉伯语经验,但可能使用从右到左的标记:
U+200F
:“\u200F\n\u0645\u0633\u062C\u062F”或“\u200F\u0645\u0633\u062C\u062F\u200E\n”。尝试过它;没用。谢谢。有趣的是,你没有收到任何错误消息吗?您使用的是什么版本的Windows?Windows 7 64位。爪哇7。你犯了什么错误?什么win-ver?我没有收到任何错误,但我只是想也许你的Windows版本没有那种字体。我使用的是Windows10 64位预览版。我想他们可能改变了字体。(编辑:)在记事本中,我的乌尔都语排版字体看起来完全不同。你贴的图片看起来像阿拉伯语,乌尔都语有点像对角线。