如何知道NSString已经从UTF8解码?

时间:2015-09-01 09:35:46

标签: ios utf-8 nsstring

我以json格式从服务器接收数据,其中包含utf8字符串。我使用以下代码进行解码:


+ (NSString*)decodeUTF8String:(NSString*)utf8String
{
    if (utf8String == nil) return nil;

    const char* str = [utf8String cStringUsingEncoding:NSISOLatin1StringEncoding];
    if (str == nil) return nil;

    NSString* res = [NSString stringWithCString:str encoding:NSUTF8StringEncoding];

    return res;
}

作为回报,我们怎么知道字符串已经从UTF8解码了?问题是如果我们将已经解码的字符串发送到上面的函数,它将返回不正确的结果(有时它返回nil值)。

例如:

json looks like this : { "name": "Innoviris Demo Session\u00c3\u00a9\u00c3\u00a9\u00c3\u00a9", ...} 

//- parse json
NSString* utf8String = @"Innoviris Demo Sessionééé";

//- decode
NSString* decodedString = [self decodeUTF8String:utf8String]; //- decodeString = @"Innoviris Demo Sessionééé" ---> correctly

//- decode again
NSString* decodedString2 = [self decodeUTF8String:decodedString]; //- decodeString2 = nil ---> unexpected result

0 个答案:

没有答案