我正在编写一个从后端接收数据的iOS应用程序。我解析NSData对象(objectNotation)如下所示。
一切正常,直到我在一个实体中收到一个特殊字符,即:
“测试já”
当我收到这个并调试parsedObject时,它显示“type”为“Test j \ U00e1”
所以这显然是一些Unicode / UTF8问题。然后我继续查看堆栈溢出,并找到了各种可能的解决方案,并尝试了所有,无济于事。
NSString *stringTest = [[NSString alloc] initWithData:objectNotation
encoding:NSUTF8StringEncoding]; --> does not work
NSString * test2 = [NSString
stringWithCString:[stringTest cStringUsingEncoding:NSUTF8StringEncoding]
encoding:NSASCIIStringEncoding]; --> does not work
我已经尝试过Obj必须提供的每一个编码,它要么将字符返回为\ U00e1,要么返回nil,或者返回一堆垃圾。
我已经和我斗争了好几个小时所以现在是发布的好时机。我感谢任何帮助。谢谢。
代码如下:
NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:objectNotation options:0 error:&localError];
NSMutableArray *btms = [[NSMutableArray alloc] init];
NSArray *results = [parsedObject valueForKey:@"results"];
NSLog(@"Count %d", results.count);
NSLog(@"Count %d", parsedObject.count);
[parsedObject enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL* stop) {
BTM *btm = [[BTM alloc] init];
NSLog(@"%@ => %@", key, value);
btm.number = key;
btm.latitude = [value valueForKey:@"lat"];
btm.longitude = [value valueForKey:@"long"];
NSString* temp = [value valueForKey:@"type”];
}
答案 0 :(得分:0)
从后端接收数据时,将“application / x-www-form-urlencoded; charset = UTF-8”设置为“Content-Type”。
[requestUrl setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];