当我将希伯来语(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"
)
答案 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角色。