我正在製作一個應用程序,使用套接字和JSON與nodejs-server進行對話,並且由於iOS 5擁有自己的NSJSONSerialization,我認爲這可能是通向跟隨。之前,我使用輕量級的yail庫。NSJSONSerialization和Unicode,將不會很好地一起玩
無論如何,在遷移到NSJSONSerialization後,我開始遇到問題的編碼,改變之前,字符Ö
將很好地發送到服務器和背部,仍然Ö
,但現在,NSJSONSerialization葉Ö
仍然以Unicode字符即\U00f6
。
閱讀文檔說默認情況下JSON對象轉換爲UTF8。當我將服務器的響應轉換爲簡單的NSString時,Ö
就像預期的那樣顯示,但它仍然在JSON中。
請幫我解釋一下你的想法,我應該回到yail還是使用內置的NSJSONSerialization?
謝謝 西蒙
你能詳細說明你如何確定'NSJSONSerialization'仍然在結果字符串中留下'\ U00f6'嗎?在我的測試中,它正確解碼爲「ö」。你確定你沒有將結果'NSDictionary' /'NSArray'的默認'-description'表示與其實際解碼結果混淆嗎? – wulong
你是什麼意思?做一個簡單的'NSLog(@「%@」,[NSJSONSerialization JSONObjectWithData:data options:0 error:&err]);'輸出帶有已解碼unicode字符串的字典,即'\ U00f6'。 – Simon
NSLog選擇代表該字符是爲了保持日誌清潔而使用逃逸代碼而不是實際字符。 您是否將數據對象直接從網絡庫傳輸到NSJSONSerialization?您可以發佈一些示例代碼嗎? –