我正在使用NSJSONSerializer来解析一些json格式的数据。数据包含一些'ü'和'ö'等。 我发现它确实返回nil,当没有预先将NSData转换为带有NSASCIIStringEncoding的NSString并将其重新转换回NSData时,'ü'转换为u,依此类推。 数据的原始格式为ISO-8859-1。 我怎么可能建议json解析器使用这种编码?
答案 0 :(得分:3)
每RFC 7159:
<强> 8.1。字符编码
JSON文本应以UTF-8,UTF-16或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