我在将JSON文件转换为NSDictionary
时遇到困难而不会丢失变音符号。
{
"België": "5",
"Haïti": "45"
}
这是我在Xcode中的支持文件中的.json文件内容的简短版本。
我需要将它们转换为NSDictionary
而不会丢失那些变音符号。
NSString *file =[[NSBundle mainBundle] pathForResource:@"countries_and_rates" ofType:@"json"];
NSString *cr = [NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:NULL];
之后,我将cr
提供给此方法:
+ (NSDictionary*)jsonFromData:(NSData*)data {
if([self isEmpty:data] || ![data isKindOfClass:[NSData class]])
return nil;
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if(!str)
return nil;
NSError* error;
id json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
if(error)
NSLog(@"************** Error: jsonFromData: %@/%@", error.localizedDescription, error);
if([json isKindOfClass:[NSDictionary class]])
return json;
else if([json isKindOfClass:[NSArray class]])
return [NSDictionary dictionaryWithObject:json forKey:@"results"];
return @{};
}
如果有人可以帮助我并告诉我我做错了什么。 仅供参考:尝试各种编码,例如NSISO和NSUTF
答案 0 :(得分:2)
不要乱用编码,让框架为你解决:
NSData *data = [NSData dataWithContentsOfFile:filepath];
NSError *error = nil;
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];