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

时间:2014-11-18 23:04:07

标签: ios json swift foundation

我正在使用NSJSONSerializer来解析一些json格式的数据。数据包含一些'ü'和'ö'等。 我发现它确实返回nil,当没有预先将NSData转换为带有NSASCIIStringEncoding的NSString并将其重新转换回NSData时,'ü'转换为u,依此类推。 数据的原始格式为ISO-8859-1。 我怎么可能建议json解析器使用这种编码?

1 个答案:

答案 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