Java-阿拉伯语字符显示不正确
在阿拉伯文中,字母的形式不同,这取决于它们构成组合词的位置(类似于草书)。但是,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] 编辑:哦,这是字符串,还有我用来设置字体的代码:Java-阿拉伯语字符显示不正确,java,fonts,combinations,arabic,urdu,Java,Fonts,Combinations,Arabic,Urdu,在阿拉伯文中,字母的形式不同,这取决于它们构成组合词的位置(类似于草书)。但是,Java不正确地显示了一些单词。它们似乎采用了正确的形式,但没有正确组合。以下是JOptionPane.showMessageDialog的结果 [1] (编辑:下面的链接,low rep不允许我添加图片) 这些字母是从左到右写的M-S-J-D——注意,最后两个J和D实际上是结合在一起的 以下是使用乌尔都语排版字体(与我在程序中使用的字体相同)在记事本中书写时的正确格式 )۔ [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位预览版。我想他们可能改变了字体。(编辑:)在记事本中,我的乌尔都语排版字体看起来完全不同。你贴的图片看起来像阿拉伯语,乌尔都语有点像对角线。