0

NSDictionary用来自 web api 的数据创建了一个。

这是记录的字典:

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

}

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

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

}

登录时[dict objectForKey:@"text"]我得到

AmoÌs

这是不正确的,应该是Amo\U00cc\U0081s/Amós

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

谢谢

4

1 回答 1

1

NSLog 打印正确!!!

您不能打印 Unicode 文本来记录。你有一个新行,一个选项卡和 \U00cc 和 \U0081 正在转换为一些 unreadalbe 文本。

这不是错误。CF 和 Cocoa 对 %S 和 %C 的解释与 printf 及其表兄弟对它们的解释不同。CF 和 Cocoa 将字符视为 UTF-16,而 printf(大概)将它们视为 UTF-32。

CF/Cocoa 解释在使用核心服务时更有用,因为某些 API(例如文件管理器)会将文本作为 UniChars 数组而不是 CFString 提供给您;只要您以空值终止该数组,就可以将其与 %S 一起使用来打印字符串。

从这里复制。

于 2013-01-10T10:26:52.197 回答