我從wincp1251的服務器獲得響應,restkit返回nil到我的映射對象字符串。我知道restKit在RKClient中有一個屬性defaultHTTPEncoding(https://github.com/RestKit/RestKit/commit/0ead8a922219ec42ec6dae6ebe59139a1fd589ae),我該如何使用它,它可以幫助我嗎?如何更改IOS的Restkit中的編碼從Utf8到Wincp1251
回答
我假設你的服務器正在返回JSON。如果是這種情況,那麼服務器需要更新,因爲它不符合JSON spec。具體做法是:
編碼
JSON內容應以Unicode編碼。默認編碼是UTF-8,編號爲 。
要注意的重要一點是,RestKit不解壓響應轉換爲字符串,因爲JSON deserialisation需要一個數據對象(NSJSONSerialization
)。再次,該規範規定:
的數據必須在JSON規範中列出的5個支持的編碼之一:UTF-8,UTF-16LE,UTF-16BE,UTF-32LE,UTF-32BE。數據可能有也可能沒有BOM。用於解析的最有效的編碼是UTF-8,所以如果您有編碼傳遞給此方法的數據的選擇,請使用UTF-8。
因此,要處理您的服務器響應,如果您無法更改它,則需要自己處理下載,將數據轉換爲適當的編碼,解壓縮JSON,然後創建映射操作以使用它。
但如果我有XML響應,而不是JSON? –
你應該真的把這些信息添加到問題中,但我想問題是一樣的,序列化拋出未知/不支持的編碼錯誤。你應該分別下載和解碼數據,然後將它映射到一個更好的格式。 – Wain
非常感謝你,最好解釋一下,你救了我的一天! –
- 1. 更改編碼UTF8到UTF8 BOM與rebol
- 2. ios UTF8編碼從nsstring
- 3. PHP-UTF8到基本編碼更改
- 4. 如何從iOS中的編碼更改應用程序圖標?
- 5. 編碼從WE8MSWIN1252到UTF8 JAVA
- 6. 如何在PHP中將內部處理編碼更改爲UTF8?
- 7. 更改字符串編碼WIN1250爲utf8
- 8. 如何從Restkit + iOS到Rails進行POST
- 9. perl utf8從iso-8859-1編碼返回不同的結果到javascript utf8編碼
- 10. 如何將字符串更改爲utf8編碼?
- 11. 如何將dplyr :: tbl連接編碼更改爲utf8?
- 12. Grails的UTF8編碼
- 13. 轉換ASCII到UTF8編碼
- 14. Apache編碼ascii到utf8
- 15. 將數據庫編碼更改爲導致java.lang.NullPointerException的UTF8
- 16. UTF8編碼的文本在更改排序規則時被錯誤地更改
- 17. C#UTF8編碼
- 18. UTF8編碼/€
- 19. C++ UTF8編碼
- 20. UTF8編碼含+
- 21. php utf8編碼
- 22. utf8和編碼
- 23. 不能更改MySQL 5.7中的字符集(從拉丁到utf8)
- 24. 如何更改HtmlWeb編碼
- 25. 如何解碼C#中的UTF8編碼值?
- 26. 解碼從XYZ和編碼爲UTF8
- 27. 如何從restfb獲取utf8編碼的文本
- 28. 不同的utf8編碼?
- 29. MemoryStream的StreamReader UTF8編碼
- 30. Python的編碼ISO爲utf8
歡迎來到SO。 請看[如何問](http://stackoverflow.com/help/how-to-ask) – JimHawkins