我有從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字符重複。
你肯定JSON從服務器來是UTF-8編碼? – 2015-03-02 12:23:28
服務器基於C編程,用於創建JSON的庫是libjson。我不知道該庫使用的編碼類型。 – AleksandarNS 2015-03-02 12:42:04