2015-03-02 81 views
0

我有從JSON格式的服務器接收的數據。它被翻譯成NSDictionary,我從中獲取字符串值。問題是當我試圖打印這個名字時,我期待「ö」,但得到「ö」。在UTF-8中,「ö」表示爲0xC3B6。在UTF-16中,「Ã」是0xC3,「¶」是0xB6。我做錯了什麼,所以字典值用UTF-16而不是UTF-8來表示?這是我正在使用的代碼。NSData包含ä,ö,ü,ß不返回正確字符

NSString *inptu = [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding]; 
NSLog(@"input: %@",inptu); 

NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding]; 
//get json from data 
NSError* error; 
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
NSString *value = [json valueForKey:"name"]; 
NSLog(@"output: %@",value); 

對於第一個日誌我得到的字符串是這樣的: 「輸入:\ u00C3 \ u00B6」 對於第二: 「輸出:ö」

這個問題可以與所有其他擴展ASCII字符重複。

+0

你肯定JSON從服務器來是UTF-8編碼? – 2015-03-02 12:23:28

+0

服務器基於C編程,用於創建JSON的庫是libjson。我不知道該庫使用的編碼類型。 – AleksandarNS 2015-03-02 12:42:04

回答

0

JSON似乎Latin-1進行編碼,您應該檢查與NSISOLatin1StringEncoding嘗試:

NSData *data = [input dataUsingEncoding:NSISOLatin1StringEncoding];

+0

這並沒有幫助我。結果與NSUTF8StringEncoding相同。 – AleksandarNS 2015-03-02 12:46:45

相關問題