NSDictionary objectForKey:字符串问题

时间:2013-01-10 10:25:47

标签: ios encoding nsstring nsdictionary

我使用来自网络API的数据创建了NSDictionary

这是记录的字典:

{
chapter =     {
    text = "\n  \tAmo\U00cc\U0081s";
};

}

登录[dict objectForKey:@"chapter"]时如下:

{
text = "\n  \tAmo\U00cc\U0081s";

}

当记录[dict objectForKey:@"text"]时,我得到了

AmoÌs

这不正确,应为Amo\U00cc\U0081s / Amós

这似乎是一个编码问题,但我无法弄明白。 知道为什么会这样吗?

由于

1 个答案:

答案 0 :(得分:1)

NSLog正确打印!!!

您无法打印Unicode文本进行记录。你有一个新行,一个标签和\ U0​​0cc和\ U0​​081,它正在转换为一些非阅读文本。

这不是错误。 CF和Cocoa解释%S和%C与printf及其堂兄弟如何解释它们的方式不同。 CF和Cocoa将字符视为UTF-16,而printf(可能)将它们视为UTF-32。

使用Core Services时,CF / Cocoa解释更有用,因为某些API(例如文件管理器)会将文本作为UniChars数组传递,而不是CFString;只要您终止该数组,就可以使用%S来打印字符串。

here复制。