我使用来自网络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
这似乎是一个编码问题,但我无法弄明白。 知道为什么会这样吗?
由于
答案 0 :(得分:1)
NSLog正确打印!!!
您无法打印Unicode文本进行记录。你有一个新行,一个标签和\ U00cc和\ U0081,它正在转换为一些非阅读文本。
这不是错误。 CF和Cocoa解释%S和%C与printf及其堂兄弟如何解释它们的方式不同。 CF和Cocoa将字符视为UTF-16,而printf(可能)将它们视为UTF-32。
使用Core Services时,CF / Cocoa解释更有用,因为某些API(例如文件管理器)会将文本作为UniChars数组传递,而不是CFString;只要您终止该数组,就可以使用%S来打印字符串。
从here复制。