天天看点

Unicode编码格式转换

1.Unicode转UTF-8

+ (NSString )encodeToPercentEscapeString: (NSString *) input

{

// Encode all the reserved characters, per RFC 3986 

// (<http://www.ietf.org/rfc/rfc3986.txt>) 

NSString *outputStr = (NSString *)  

CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 

                                        (CFStringRef)input, 

                                        NULL, 

                                        (CFStringRef)@"!*'();:@&=+$,/?%#[]", 

                                        kCFStringEncodingUTF8); 

return outputStr; 
           

}

+ (NSString )decodeFromPercentEscapeString: (NSString *) input

{

NSMutableString *outputStr = [NSMutableStringstringWithString:input]; 

[outputStr replaceOccurrencesOfString:@"+" 

                           withString:@" " 

                              options:NSLiteralSearch 

                                range:NSMakeRange(0, [outputStrlength])]; 



return [outputStrstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
           

}

2.UTF-8和Unicode转化

//Unicode转UTF-8

+ (NSString) replaceUnicode:(NSString*)aUnicodeString

{

NSString *tempStr1 = [aUnicodeStringstringByReplacingOccurrencesOfString:@"\\u"withString:@"\\U"]; 

NSString *tempStr2 = [tempStr1stringByReplacingOccurrencesOfString:@"\""withString:@"\\\""]; 

NSString *tempStr3 = [[@"\""stringByAppendingString:tempStr2] stringByAppendingString:@"\""]; 

NSData *tempData = [tempStr3dataUsingEncoding:NSUTF8StringEncoding]; 

NSString* returnStr = [NSPropertyListSerializationpropertyListFromData:tempData 

                                                       mutabilityOption:NSPropertyListImmutable  

                                                                format:NULL 

                                                       errorDescription:NULL]; 



return [returnStrstringByReplacingOccurrencesOfString:@"\\r\\n"withString:@"\n"];
           

}

//UTF-8转Unicode

+(NSString ) utf8ToUnicode:(NSString *)string

{

NSUInteger length = [string length];

NSMutableString *s = [NSMutableStringstringWithCapacity:0];

for (int i = 0;i < length; i++)

{

    unichar _char = [string characterAtIndex:i];

    //判断是否为英文和数字

    if (_char <= '9' && _char >='0')

    {

        [s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];

    }

    else if(_char >='a' && _char <= 'z')

    {

        [s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];



    }

    else if(_char >='A' && _char <= 'Z')

    {

        [s appendFormat:@"%@",[stringsubstringWithRange:NSMakeRange(i,1)]];



    }

    else

    {

        [s appendFormat:@"\\u%x",[stringcharacterAtIndex:i]];

    }

}

return s;
           

}

继续阅读