我从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字符重复此问题。
答案 0 :(得分:0)
JSON似乎是在Latin-1
中编码的,您应该检查并尝试使用NSISOLatin1StringEncoding
:
NSData *data = [input dataUsingEncoding:NSISOLatin1StringEncoding];