ios重音字母看起来很奇怪

ios重音字母看起来很奇怪,ios,objective-c,Ios,Objective C,我正在iOS应用程序中解析一些JSON,并用文本设置一些标签。某些标签应如下所示: 碧昂丝 但是,当显示在标签中时,它们显示为: 碧昂斯┱ 我使用的字体支持重音,但我似乎不知道如何正确显示,即使使用NSUTF8StringEncoding 有什么想法吗?您的JSON是否有一个编码参数,或者您可以从响应头获取它?我使用nshtpurlresponse这样做: - (NSString *)decodedStringWithResponse:(NSHTTPURLResponse *)response

我正在iOS应用程序中解析一些JSON,并用文本设置一些标签。某些标签应如下所示:

碧昂丝

但是,当显示在标签中时,它们显示为:

碧昂斯┱

我使用的字体支持重音,但我似乎不知道如何正确显示,即使使用
NSUTF8StringEncoding


有什么想法吗?

您的JSON是否有一个编码参数,或者您可以从响应头获取它?我使用
nshtpurlresponse
这样做:

- (NSString *)decodedStringWithResponse:(NSHTTPURLResponse *)response data:(NSData *)data {
    NSStringEncoding encoding = NSUTF8StringEncoding;
    if (response.textEncodingName) {
        CFStringEncoding IANAEncoding = CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)response.textEncodingName);
        if (IANAEncoding != kCFStringEncodingInvalidId) {
            encoding = CFStringConvertEncodingToNSStringEncoding(IANAEncoding);
        }
    }

    NSString *decodedString = [[NSString alloc] initWithData:data encoding:encoding];
    if (!decodedString)
        decodedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    if (!decodedString)
        decodedString = [[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding];
    if (!decodedString)
        decodedString = [[NSString alloc] initWithData:data encoding:NSISOLatin2StringEncoding];

    return decodedString;
}

不确定您当前正在使用什么来解析这个,但您应该尝试一下SBJSON。它非常易于使用,下面的教程可能会为您省去很多麻烦:


SBJSON:

如果检查解析出的内容,您会在调试器中看到什么字符?调试器返回相同的内容:
Beyoncé那么它可能在解析器中。对吗?您从何处获取数据?JSON的内部是:
Beyoncé
(直接粘贴)本地服务器,我完全控制两端。仅供参考,这缺少一个右大括号,但即使添加它也会导致控制可能到达非无效函数的结尾。复制/粘贴的格式错误现已修复,但是你仍然能得到解决方案的要点,即从ResponseEYP中读取编码!给它一个快照看起来这样可能行得通,唯一的问题是我需要
NSDictionary
中的JSON响应,而不是
NSString
。所以,我正在努力。对objective-c来说非常陌生……请查看NSJSONSerialization或一些开源json库