url 编码和解码

- (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;",@" ", 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;

}

时间: 2024-10-30 07:10:51

url 编码和解码的相关文章

Java实现的URL编码和解码技术

当编写 " 网络爬虫" 或下载器时,在 Java 中实现 URL 编码和解码是一个很常见的要求.本文的重点是创建用于对所传递的 URL 进行编码和解码的模块. Main 方法 public static void main(String[] args) {                // TODO Auto-generated method stub                String url="https%3A%2F%2Fr1---sn-ci5gup-cags.

javascript url 编码与解码函数

javascript教程 url 编码与解码函数 function UrlEncode(str) {     var ret="";     var strSpecial="!"#$%&()*+,/:;<=>?[]^`{|}~%"; var tt="";     for(var i=0;i<str.length;i++)     {         var chr = str.charAt(i);       

Objective-C学习——中文URL编码和解码

发现NSString类中有内置的方法可以实现.他们分别是: - (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding - (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding        只要传入相应的编码即可以进行编码和解码了,不过此方法是对整个Url进行编码的所以如果有Q

asp.net URL编码与解码_实用技巧

例如Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8.如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码. 又如,Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文.否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成

js和C#中的编码和解码

原文:js和C#中的编码和解码 同一个字符串,用URL编码和HTML编码,结果是完全不同的. JS中的URL编码和解码 encodeURIComponent("text") //url编码 decodeURIComponent("text") //url解码 JS中的HTML编码和解码 escape("text") //html编码 unescape("text") //html解码   C#中的URL编码和解码   Http

JavaScript Base64编码和解码,实现URL参数传递。_javascript技巧

为什么需要对参数进行编码?相信有过开发的经验的广大程序员都知道,在Web中,若是直接在Url地址上传递参数值,若是中文,或者+等什么的就会出现乱码现象,若是数字或者英文的好象没有什么问题,简言之,传递过来的参数是需要进行编码的.在这里,也许有人会说,为什么不直接用Server.UrlDecode和Server.UrlEncode这两个来进行编码和解码的操作呢? 的确,这两个服务器端对象很好使用,用起来也很方便,但是,若在客户端是HTML的Input,查询的时候页面是HTML或者其他的,反正不是.

IOS中对Url进行编码和解码示例_IOS

本文主要介绍IOS中对Url进行编码和解码示例,具体如下: 1.非ARC模式下 + (NSString *)encodeToPercentEscapeString: (NSString *) input {    // Encode all the reserved characters, per RFC 3986    // () NSString *outputStr = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAlloc

如何用excel urldecode解码把url编码转为汉字?

统计分析可以反映出网站运营的情况,并根据实际作出相应的调整,是站长必需的基础技能.ytkah感觉最好用的是谷歌统计,里面有个搜索关键词及对应受访页面,这个功能对优化用处很大,但大家都知道访问不太顺畅.statcounter也有相似的功能,但免费版只能显示最近几天或最近几百条的记录.bd统计.cnzz也有类似的功能,只是不太明显,没注意的话可能发现不到,没错,就是访问明细那.最相关的文章:如何从统计中批量获取BD搜索关键词及对应的入口页面? 以上是cnzz的截图,只能显示最近7天的数据,可以每周下

URL编码与SQL注射

编码|编码 说到url编码,你或许会想起N年前的url编码漏洞.可惜我是"生不逢时"啊,我接触网络时,那个漏洞早就绝迹咯.  言归正传,URL 编码是什么东东呢?看看我从网上抄的定义:  引用: url编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符, 将数据排行等等)作为URL的一部分或者分离地发给服务器.不管哪种情况, 在服务器端的表单输入格式样子象这样:  theName=Ichab