iOS - 从后端转换UTF8数据并显示不正确

时间:2014-10-14 05:11:38

标签: ios unicode utf-8 character-encoding

我正在编写一个从后端接收数据的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”];

}

1 个答案:

答案 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"];