Ios 包含ä、ö、ü、ß未返回正确字符的NSData

Ios 包含ä、ö、ü、ß未返回正确字符的NSData,ios,iphone,ipad,utf-8,Ios,Iphone,Ipad,Utf 8,我从服务器收到了JSON格式的数据。它被翻译成NSDictionary,我从中获取字符串值。问题是,当我试图打印那个名字时,我期待着它,但却得到了它。在UTF-8中,ö表示为0xC3B6。在UTF-16中,Ã是0xC3,而¨是0xB6。我做错了什么,所以字典值用UTF-16而不是UTF-8表示?下面是我正在使用的代码 NSString *inptu = [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringE

我从服务器收到了JSON格式的数据。它被翻译成NSDictionary,我从中获取字符串值。问题是,当我试图打印那个名字时,我期待着它,但却得到了它。在UTF-8中,ö表示为0xC3B6。在UTF-16中,Ã是0xC3,而¨是0xB6。我做错了什么,所以字典值用UTF-16而不是UTF-8表示?下面是我正在使用的代码

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似乎是用拉丁语1编码的,您应该检查一下,然后尝试使用NSISOLATIN1STRINGCODING:


NSData*data=[输入数据使用编码:NSISOLATIN1STRINGCODING]

您确定来自服务器的JSON是UTF-8编码的吗?服务器基于C编程,用于创建JSON的库是libjson。我不知道那个库使用的是哪种编码。这对我没有帮助。结果与NSUTF8StringEncoding相同。