iOS基本符号化フォーマット変換
3929 ワード
iOS
1.UTF-8
NSString *data = @" , !";
// UTF-8
NSString *dataUTF8 = [data stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",dataUTF8);
//UTF-8 GBK, UTF8 , 。
//Replaces all percent escapes with the matching characters as determined by the given encoding. Returns nil if the transformation is not possible (i.e. the percent escapes give a byte sequence not legal in the given encoding). See CFURLCreateStringByReplacingPercentEscapes in CFURL.h for more complex transformations
NSString *dataGBK = [dataUTF8 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",dataGBK);
Xcode4.2 :
, :
//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 = [NSMutableString stringWithString:input];
[outputStr replaceOccurrencesOfString:@"+"
withString:@" "
options:NSLiteralSearch
range:NSMakeRange(0, [outputStr length])];
return [outputStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
2.UTF-8 Unicode
//Unicode UTF-8
+ (NSString*) replaceUnicode:(NSString*)aUnicodeString
{
NSString *tempStr1 = [aUnicodeString stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData
mutabilityOption:NSPropertyListImmutable
format:NULL
errorDescription:NULL];
return [returnStr stringByReplacingOccurrencesOfString:@"\\r\
" withString:@"
"];
}
+(NSString *) utf8ToUnicode:(NSString *)string
{
NSUInteger length = [string length];
NSMutableString *s = [NSMutableString stringWithCapacity:0];
for (int i = 0;i < length; i++)
{
unichar _char = [string characterAtIndex:i];
//
if (_char <= '9' && _char >= '0')
{
[s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
}
else if(_char >= 'a' && _char <= 'z')
{
[s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
}
else if(_char >= 'A' && _char <= 'Z')
{
[s appendFormat:@"%@",[string substringWithRange:NSMakeRange(i, 1)]];
}
else
{
[s appendFormat:@"\\u%x",[string characterAtIndex:i]];
}
}
return s;
}