我正在使用 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/