【问题标题】:Inserting hebrew into NSMutableArrey将希伯来语插入 NSMutableArrey
【发布时间】:2013-07-05 07:55:09
【问题描述】:

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

【问题讨论】:

  • 一切都应该没问题,试试NSLog(@"%@", peaceArrey[0]);
  • 噢 :) 成功了!那么这些符号是什么?
  • @vikingosegundo 也许您想将此作为答案发布?我会检查它是否正确

标签: objective-c xcode nsstring nsmutablearray


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      另一方面,如果您将字符串放入数组中,则会调用 NSArraydescription 方法,而该方法又会调用 descriptionWithLocale:indent:

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

      【讨论】:

        猜你喜欢
        • 2013-12-17
        • 1970-01-01
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-16
        • 2023-03-23
        • 2012-12-16
        相关资源
        最近更新 更多