iOS-如何使用umlauts正确读取JSON文件
在不丢失umlauts的情况下,我很难将JSON文件转换为iOS-如何使用umlauts正确读取JSON文件,ios,objective-c,json,Ios,Objective C,Json,在不丢失umlauts的情况下,我很难将JSON文件转换为NSDictionary { "België": "5", "Haïti": "45" } 这是Xcode中我的支持文件中.json文件内容的简短版本。 我需要将它们转换为NSDictionary,而不会丢失那些umlauts NSString *file =[[NSBundle mainBundle] pathForResource:@"countries_and_rates" ofType:@"json"]; NSString *c
NSDictionary
{
"België": "5",
"Haïti": "45"
}
这是Xcode中我的支持文件中.json文件内容的简短版本。
我需要将它们转换为NSDictionary
,而不会丢失那些umlauts
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不要乱用编码,让框架为您解决:
NSData *data = [NSData dataWithContentsOfFile:filepath];
NSError *error = nil;
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
你看到的是什么?重音字符是否被转换为非重音字符,或无意义的值,或者什么?为什么不直接将文件作为NSData读取?当然,您知道NSLog可能无法正确表示非ASCII字符。您如何将NSString*中的cr传递给需要NSData的jsonFromData?只需将文件作为NSData读取并传递即可。@Noahwetherspoon我看到的是普通字母写在这里,仍然看到没有umlauts的普通字母:(编辑:它起作用了,我的错误是我忘记了硬编码的json名称。它应该本地化为“countries\u and\u rates\u NL.json”