5

在书面阿拉伯语中,字符的外观会根据它们在单词中的位置而有所不同。例如,字母 ta 可能看起来像这样:ـثـ 在单词中,但看起来像这样:ﺙ 如果它独立存在。我有一些阿拉伯语文本,例如:

string word = والتفويض ;

当我将word其作为一个整体呈现时,它会正确呈现。现在,我想解析字符串并一次打印出单词中的每个字母。但是,如果我这样做:

foreach(char c in word.ToCharArray())
{
    Debug.Print(c.ToString());  
}

char c不会打印出字母的原始表示,因为它是在单词的上下文中呈现的,而是会打印出相同的阿拉伯字母,就好像它是由它自己呈现的一样。如何解析我的阿拉伯文本字符串,以使返回的字母与显示为整个单词时的字母相同?

我正在尝试在 c# 中执行此操作。

4

1 回答 1

4

UCS 中有代表特定形式的阿拉伯字符的字符。但是,当从一种上下文移动到另一种上下文时,这些都不能很好地工作。

一般来说,如果你想表明一个字母连接到另一个,当没有这样的字母连接它时,你应该在适当的地方使用 U+200D ZERO WIDTH JOINER(在字符之前将连接器放在右边,在字符之后将其放置在左侧,或者在任一侧都有一个。

相反,在字符之间放置 U+200C ZERO WIDTH NON-JOINER 会破坏它们的连接。

实际效果如何取决于处理字符的渲染引擎。

于 2010-10-13T09:04:28.463 回答