如何将 Restkit for IOS 中的编码从 Utf8 更改为 Wincp1251

Posted

技术标签:

【中文标题】如何将 Restkit for IOS 中的编码从 Utf8 更改为 Wincp1251【英文标题】:How to change encoding in Restkit for IOS from Utf8 to Wincp1251 【发布时间】:2016-04-07 07:59:16 【问题描述】:

我从 wincp1251 中的服务器获得响应,restkit 将 nil 返回到我的映射对象字符串。我知道restKit在RKClient(https://github.com/RestKit/RestKit/commit/0ead8a922219ec42ec6dae6ebe59139a1fd589ae)中有一个属性defaultHTTPEncoding,我该如何使用它,它可以帮助我吗?

【问题讨论】:

欢迎来到 SO。请看how to ask 【参考方案1】:

我假设您的服务器正在返回 JSON。如果是这种情况,则需要更新服务器,因为它不符合JSON spec。具体来说:

    编码

    JSON 文本应以 Unicode 编码。默认编码是 UTF-8。

需要注意的重要一点是,RestKit 不会将响应解压缩为字符串,因为 JSON 反序列化需要一个数据对象 (NSJSONSerialization)。同样,规范指出:

数据必须采用 JSON 规范中列出的 5 种受支持的编码之一:UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE。数据可能有也可能没有 BOM。用于解析的最有效编码是 UTF-8,因此如果您可以选择对传递给此方法的数据进行编码,请使用 UTF-8。

所以要处理您的服务器响应,如果您无法更改它,您需要自己处理下载,将数据转换为适当的编码,解压缩 JSON,然后创建一个映射操作来使用它。

【讨论】:

但是如果我有 xml 响应,而不是 json? 您确实应该将该信息添加到问题中,但我想问题是相同的,并且序列化会引发未知/不支持的编码错误。您真的应该单独下载和解码数据,然后将其映射为更好的格式。 非常感谢,最好解释一下,你救了我的一天! 没问题。将来只需尝试添加有关您正在做什么的更多信息。不要忘记投票并标记答案:)

以上是关于如何将 Restkit for IOS 中的编码从 Utf8 更改为 Wincp1251的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Restkit + iOS 发布到 Rails

RestKit .20.x 价值转换

即使按下主页按钮或手机进入待机状态,如何在 iOS 中继续进行 RESTKit 调用

RestKit - 不符合键值编码,在 JSON 中没有根

如何使用 RestKit 删除对象?

RestKit/RKObjectMapping:从服务器加载数据后如何添加其他属性?