url 编码和解码

简介: <p style="margin-top:0px; margin-bottom:0px; font-size:14px; font-family:Menlo">- (NSString*)encodeURL:(NSString *)string</p> <p style="margin-top:0px; margin-bottom:0px; font-size:14px; font-fam

- (NSString*)encodeURL:(NSString *)string

{

NSString *newString = NSMakeCollectable([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding([self stringEncoding])) autorelease]);

if (newString) {

return newString;

}

return @"";

}


decodeURL

CFStringRef CFURLCreateStringByReplacingPercentEscapesUsingEncoding(CFAllocatorRef allocator, CFStringRef origString, CFStringRef charsToLeaveEscaped, CFStringEncoding encoding)


+ (NSString *)decodeUTF8ToChinese:(NSString *)encodeStr;

{

return [encodeStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

}


+ (NSString *)encodeChineseToUTF8:(NSString *)encodeStr;

{

return [[NSString stringWithFormat:@"%@",encodeStr] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

}


+ (NSString *)encodeURL:(NSString *)string endcode:(NSStringEncoding)stringEncoding

{

NSString *newString = NSMakeCollectable([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding(stringEncoding)) autorelease]);

if (newString) {

return [newString autorelease];

}

    

return @"";

}


+ (NSString *)encodeURL:(NSString *)string

{

NSString *newString = NSMakeCollectable([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)) autorelease]);

if (newString) {

return newString;

}

    

return @"";

}


+ (NSString*)encodeURL:(NSString *)originalString stringEncoding:(NSStringEncoding)stringEncoding

{

    //!  @  $  &  (  )  =  +  ~  `  ;  '  :  ,  /  ?

    //%21%40%24%26%28%29%3D%2B%7E%60%3B%27%3A%2C%2F%3F

    NSArray *escapeChars = [NSArray arrayWithObjects:@";" , @"/" , @"?" , @":" ,

                            @"@" , @"&" , @"=" , @"+" ,    @"$" , @"," ,

                            @"!", @"'", @"(", @")", @"*", nil];

    

    NSArray *replaceChars = [NSArray arrayWithObjects:@"%3B" , @"%2F", @"%3F" , @"%3A" ,

                             @"%40" , @"%26" , @"%3D" , @"%2B" , @"%24" , @"%2C" ,

                             @"%21", @"%27", @"%28", @"%29", @"%2A", nil];

    

    int len = [escapeChars count];

    

    NSMutableString *temp = [[originalString

                              stringByAddingPercentEscapesUsingEncoding:stringEncoding]

                             mutableCopy];

    

    int i;

    for (i = 0; i < len; i++) {

        

        [temp replaceOccurrencesOfString:[escapeChars objectAtIndex:i]

                              withString:[replaceChars objectAtIndex:i]

                                 options:NSLiteralSearch

                                   range:NSMakeRange(0, [temp length])];

    }

    

    NSString *outStr = [NSString stringWithString: temp];

    

    return outStr;

}



+ (NSString*)encodeXML:(NSString *)originalString

{

    //

    //    string = [string stringByReplacingOccurrencesOfString:@"&quot;" withString:@"\""];

    //    string = [string stringByReplacingOccurrencesOfString:@"&apos;" withString:@"'"];

    //    string = [string stringByReplacingOccurrencesOfString:@"&amp;" withString:@"&"];

    //    string = [string stringByReplacingOccurrencesOfString:@"&lt;" withString:@"<"];

    //    string = [string stringByReplacingOccurrencesOfString:@"&gt;" withString:@">"];

    

    //不包换双引号:@"&quot;" @"\""

    

    NSArray *escapeChars = [NSArray arrayWithObjects:@"'" , @"&" , @"<" ,

                            @">", nil];

    NSArray *replaceChars = [NSArray arrayWithObjects:@"&apos;", @"&amp;" , @"&lt;" ,

                             @"&gt;", nil];

    

    int count = [escapeChars count];

    NSMutableString *temp = [[originalString  mutableCopy] autorelease];

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

    {

        

        [temp replaceOccurrencesOfString:[escapeChars objectAtIndex:i]

                              withString:[replaceChars objectAtIndex:i]

                                 options:NSLiteralSearch

                                   range:NSMakeRange(0, [temp length])];

    }

    

    NSString *outStr = [NSString stringWithString:temp];

    

    return outStr;

}


+ (NSString*)decodeXML:(NSString *)originalString

{

    NSArray *escapeChars = [NSArray arrayWithObjects:@"&quot;" , @"&apos;", @"&amp;" , @"&lt;" ,

                            @"&gt;",@"&#xD;", nil];

    NSArray *replaceChars = [NSArray arrayWithObjects:@"\"" , @"'" , @"&" , @"<" ,

                             @">", @"\r",nil];

    int count = [escapeChars count];

    NSMutableString *temp = [[originalString  mutableCopy] autorelease];

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

    {

        

        [temp replaceOccurrencesOfString:[escapeChars objectAtIndex:i]

                              withString:[replaceChars objectAtIndex:i]

                                 options:NSLiteralSearch

                                   range:NSMakeRange(0, [temp length])];

    }

    

    NSString *outStr = [NSString stringWithString:temp];

    

    return outStr;

}


目录
相关文章
|
3月前
|
Java
dk1.8和jdk17底层对url参数的编码不一样吗
dk1.8和jdk17底层对url参数的编码不一样吗
28 0
|
3月前
|
数据安全/隐私保护
URL编码解析方式-特殊字符加密和解密
URL编码解析方式-特殊字符加密和解密
29 0
|
4月前
|
Python
Python-URL编码和URL解码方法
Python-URL编码和URL解码方法
50 0
|
4月前
|
JavaScript
URL编码中的escape、encodeURI和encodeURIComponent
URL编码中的escape、encodeURI和encodeURIComponent
48 1
|
4月前
|
存储 Web App开发 JavaScript
Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码
Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码
322 0
|
5月前
|
JavaScript 前端开发
JS实现url的编码和解码
JS实现url的编码和解码
|
5月前
a标签下载特殊字符url手动编码浏览器兼容性不显示
a标签下载特殊字符url手动编码浏览器兼容性不显示
|
7月前
|
JavaScript PHP
BUUCTF Crypto Url编码1
BUUCTF Crypto Url编码1
53 0
|
8月前
|
数据安全/隐私保护
URL编码解析方式-特殊字符加密和解密
我们一起来看看为什么要给特殊字符进行加密,那又如何进行解密呢?
71 0
|
11月前
|
JSON 数据格式 Python
django drf 案例--实现url编码和json和dict格式转化小工具(涉及定义模型类,序列化器,类视图,路由),接口测试
django drf 案例--实现url编码和json和dict格式转化小工具(涉及定义模型类,序列化器,类视图,路由),接口测试

热门文章

最新文章