iOS-如何使用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

在不丢失umlauts的情况下,我很难将JSON文件转换为
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”