ios - NSJSONSerializer 如何确定给定数据的编码?

标签 ios json swift foundation

我正在使用 NSJSONSerializer 来解析一些 json 格式的数据。数据包含一些“ü”和“ö”等。 我发现它确实返回 nil,当没有事先使用 NSASCIIStringEncoding 将 NSData 转换为 NSString 并将其重新转换回 NSData 时,以便 'ü' 转换为 u 等等。 数据的原始格式是 ISO-8859-1。 我如何建议 json 解析器使用这种编码?

最佳答案

RFC 7159 :

8.1. Character Encoding

JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32.

因此,如果您的数据采用 ISO-8859-1 编码,则它不是有效的 JSON

使用 NSString 将其转换为定义的可接受的 JSON 形式之一:

NSString *string = [[NSString alloc] initWithData:dat encoding:NSISOLatin1StringEncoding];
NSData *utf8Data = [string dataUsingEncoding:NSUTF8StringEncoding];

// ... give utf8Data to NSJSONSerializer

关于ios - NSJSONSerializer 如何确定给定数据的编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005825/

相关文章:

ios - NativeScript 将 UIViewController 传递给 native iOS 方法

swift - 向下滚动 UITableView 时使用 Kingfisher Swift 加载 Gif 图像会导致延迟

ios - 尝试无缝循环 AVPlayer (userCapturedVideo) 时出现问题

swift - 快速将 UIImage 推送到下一个 View Controller

ios - Swift 3 URLSession.shared() 对成员 'dataTask 的引用不明确(带有 :completionHandler:) error (bug)

Java android JsonArray 解析器

iOS 核心数据错误 - 对多关系的值类型 Not Acceptable

ios - 监控 iPhone 已解锁多长时间

ios - 快速引用子类中的 Outlet

javascript - Ajax 未获取最新版本的 JSON 文件