将希伯来语插入NSMutableArrey

时间:2013-07-05 07:55:09

标签: objective-c xcode nsstring nsmutablearray

当我将希伯来语(LTR)字符串插入NSMutableArrey时,字符串会以某种方式失真。
我该怎么办?

        NSString *peace = @"שלום";
        NSLog(@"peace - %@", peace);

        NSMutableArray *peaceArrey = [[NSMutableArray alloc]initWithCapacity:1];
        [peaceArrey addObject:peace];
        NSLog(@"peaceArrey - %@",peaceArrey);

这是日志:

        peace - שלום
        peaceArrey - (
            "\U05e9\U05dc\U05d5\U05dd"
        )

3 个答案:

答案 0 :(得分:2)

一切都应该没问题,试试NSLog(@"%@", peaceArrey[0]);

您看到的结果就是NSArrays的打印方式:unicode字符表示为其代码。

答案 1 :(得分:1)

不要将记录的表示误认为对象的实际值。 NSArray的描述采用旧式属性列表格式。除此之外,这意味着字符串中的非ASCII值表示为转义序列。您将Unicode字符视为一系列UTF-16代码单元,表示为转义序列。

答案 2 :(得分:1)

在参数上使用%@格式说明符NSLog调用description来记录字符串。

如果是普通字符串,则此方法只返回字符串:

NSLog(@"string: %@", @"שלום");
// prints שלום

另一方面,如果您将字符串放入数组中,则调用NSArray的{​​{1}}方法,然后调用description

此方法只创建一个属性列表格式化的字符串。它使用ASCII编码的descriptionWithLocale:indent:。这就是为什么它必须逃避希伯来语的unicode角色。