NSLog和-print description之间的差异 - 使用NSString和UTF-8

时间:2011-07-05 11:30:52

标签: objective-c ios4 xcode4 nsstring

我很困惑。我正在解析json字符串。

在解析之前,我会检查NSString的内容是什么。

Xode4中: 当我点击NSString变量“打印说明”时 控制台将值显示为UTF-8的\u434 \u433格式

当我呼叫NSLog("%@",content)时,控制台会显示UTF-8编码的“可读”字符。

为什么会有所不同?我怎么知道我要解析的字符串是100%UTF-8?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您可以通过任何方法查看您正在查找的西里尔字符而不是转义符,那么您将使用UTF-8字符串。

“-description”方法不是您想要在这里使用的方法。它更有可能显示逃脱的角色;特别是,每当您将值存储在属性列表项(如NSArray或NSDictionary)中时,其-description通常会转义除纯ASCII之外的任何字符。

NSLog是一个更可靠的指南,因为它不使用-description。如果它出现在NSLog中,它可能就好了。

如果你想绝对确定你的字符串是正确编码的UTF-8,测试它的最好方法就是显示它。在用户界面中创建一个文本界面元素(NSTextField或UITextField),将其连接起来,并将字符串设置为值。如果它显示在那里,则格式正确。

短版:如果它在调试器中显示为转义字符,则并不一定意味着它不是UTF8。如果它出现在任何地方(包括NSLog)有正确的字符,它可能是正确的编码。如果你想确定,请设置一个测试界面元素,看看它在那里的样子。