在Objective-C中,希伯来语标点符号显示不正确

时间:2014-04-28 12:48:41

标签: objective-c hebrew punctuation

我有一个非常基本的路线:

self.label.text = @",הם הכריחו אותה לשתות ויסקי";

注意字符串左侧的逗号。当它显示在UILabel中时,我会在右侧看到逗号。这是我用希伯来语看到的标点符号问题的一个例子。

解决这个问题的想法吗?

2 个答案:

答案 0 :(得分:1)

您拥有的大多数文字是从右到左,但逗号是从左到右。您正在显示Xcode显示的源代码。 Xcode将选择显示此类文本的规则一点也不明显。如果你写

,你会对你的源代码有信心
self.label.text = @"הם הכריחו אותה לשתות ויסקי" ",";
例如

self.label.text = @"," "הם הכריחו אותה לשתות ויסקי";

所以你知道 100%确定你在Xcode中有什么文字。在那之后,我担心阅读文档和看到你需要做的事情非常重要。虽然文本中的字符有一些排序,但文本字段本身也有文本排序。你可以在里面放入一些希伯来语的拉丁文本,或者里面有一点拉丁语的希伯来语(从右到左)文本,它们的行为会有所不同。

您所描述的内容看起来像是一个从左到右的文本字段,用于显示一些希伯来文本,因此整个显示顺序是从左到右,但是里面的希伯来语项目(不是逗号)从右到左显示。您需要更改文本字段本身的显示顺序。

答案 1 :(得分:0)

我一直在阅读Bi-directional text,似乎某些Unicode字符指定了以下文字的某些属性。通过实验,我发现从右到左的隔离字符或U + 2067将导致后面的文本以正确的顺序显示。因此,该问题的Objective C解决方案是:

self.label.text = [@"\u2067" stringByAppendingString: @",הם הכריחו אותה לשתות ויסקי"];