NSData包含ä,ö,ü,ß不返回正确的字符

时间:2015-03-02 11:57:49

标签: 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: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);

对于第一个日志,我得到这样的字符串:“input:\ u00C3 \ u00B6” 第二个:“输出:ö”

可以使用所有其他扩展ASCII字符重复此问题。

1 个答案:

答案 0 :(得分:0)

JSON似乎是在Latin-1中编码的,您应该检查并尝试使用NSISOLatin1StringEncoding

NSData *data = [input dataUsingEncoding:NSISOLatin1StringEncoding];