如何将 IOS 的 Restkit 编码从 Utf8 更改为 Wincp1251
How to change encoding in Restkit for IOS from Utf8 to Wincp1251
我从 wincp1251 和 restkit returns 中的服务器收到对映射对象字符串的响应。我知道 restKit 在 RKClient(https://github.com/RestKit/RestKit/commit/0ead8a922219ec42ec6dae6ebe59139a1fd589ae) 中有一个 属性 defaultHTTPEncoding,我该如何使用它,它对我有帮助吗?
我假设您的服务器正在返回 JSON。如果是这种情况,则需要更新服务器,因为它不符合 JSON spec。具体来说:
Encoding
JSON text SHALL be encoded in Unicode. The default encoding is
UTF-8.
需要注意的重要一点是 RestKit 不会将响应解压缩为字符串,因为 JSON 反序列化需要一个数据对象 (NSJSONSerialization
)。再一次,规范指出:
The data must be in one of the 5 supported encodings listed in the JSON specification: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. The data may or may not have a BOM. The most efficient encoding to use for parsing is UTF-8, so if you have a choice in encoding the data passed to this method, use UTF-8.
所以要处理你的服务器响应,如果你不能改变它,你需要自己处理下载,将数据转换为适当的编码,解压 JSON,然后创建一个映射操作使用那个。
我从 wincp1251 和 restkit returns 中的服务器收到对映射对象字符串的响应。我知道 restKit 在 RKClient(https://github.com/RestKit/RestKit/commit/0ead8a922219ec42ec6dae6ebe59139a1fd589ae) 中有一个 属性 defaultHTTPEncoding,我该如何使用它,它对我有帮助吗?
我假设您的服务器正在返回 JSON。如果是这种情况,则需要更新服务器,因为它不符合 JSON spec。具体来说:
Encoding
JSON text SHALL be encoded in Unicode. The default encoding is UTF-8.
需要注意的重要一点是 RestKit 不会将响应解压缩为字符串,因为 JSON 反序列化需要一个数据对象 (NSJSONSerialization
)。再一次,规范指出:
The data must be in one of the 5 supported encodings listed in the JSON specification: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. The data may or may not have a BOM. The most efficient encoding to use for parsing is UTF-8, so if you have a choice in encoding the data passed to this method, use UTF-8.
所以要处理你的服务器响应,如果你不能改变它,你需要自己处理下载,将数据转换为适当的编码,解压 JSON,然后创建一个映射操作使用那个。