0

当我将希伯来语 (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"
        )
4

3 回答 3

2

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

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

于 2013-07-05T08:32:17.610 回答
1

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

于 2013-07-05T08:28:28.457 回答
1

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

如果是纯字符串,此方法只返回字符串:

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

另一方面,如果您将字符串放入数组中,则会调用NSArray'description方法,而后者又会调用descriptionWithLocale:indent:.

此方法只是创建一个属性列表格式的字符串。它使用NSPropertyListOpenStepFormatASCII 编码。这就是为什么它必须转义希伯来语 unicode 字符。

于 2013-07-05T08:34:29.863 回答