(IOS)字符串encode编码(编码url字符串不成功的问题)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(IOS)字符串encode编码(编码url字符串不成功的问题)相关的知识,希望对你有一定的参考价值。

参考技术A // 我们一般用这个方法处理stringByAddingPercentEscapesUsingEncoding但是这个方法好想不会处理/和&这种特殊符号,这种情况就需要用下边这个方法处理

@implementationNSString (NSString_Extended)

- (NSString*)urlencode

    NSMutableString *output = [NSMutableString string];

    const unsigned char *source = (const unsigned char *)[self UTF8String];

    intsourceLen =strlen((constchar*)source);

    for(inti =0; i < sourceLen; ++i)

        constunsignedcharthisChar = source[i];

        if(thisChar ==' ')

            [outputappendString:@"+"];

        elseif(thisChar =='.'|| thisChar =='-'|| thisChar =='_'|| thisChar =='~'||

                   (thisChar >='a'&& thisChar <='z') ||

                   (thisChar >='A'&& thisChar <='Z') ||

                   (thisChar >='0'&& thisChar <='9'))

            [outputappendFormat:@"%c", thisChar];

        else

            [outputappendFormat:@"%%%02X", thisChar];

       

   

    returnoutput;

什么是urlencode编码

urlencode编码:就是将字符串以URL编码,一种编码方式,主要为了解决url中中文乱码问题。

例如:

String mytext = java.net.URLEncoder.encode("中国", "utf-8"); //urlencode编码
String mytext2 = java.net.URLDecoder.decode(mytext, "utf-8"); //urlencode解码

这两条语句在同一个页面中的话,得到的结果是:
mytext: %E4%B8%AD%E5%9B%BD
mytex2: 中国
参考技术A 不是很理解你的意思

从HTTP协议来讲, 一个标准的URL是有固定的编码方式的,它只能包含固定的字符集

比如你输入一个网址
http://www.baidu.com/s?wd=我&cl=3, 在访问这个网址的时候
网络上传输的时候,‘我’这字会变成%CE%D2 这种编码

网站收到你这个网址的时候,再把%CE%D2 转换成 ‘我’字才能理解你这个网址的意思

以上是关于(IOS)字符串encode编码(编码url字符串不成功的问题)的主要内容,如果未能解决你的问题,请参考以下文章

URL encoding(URL编码)

PHP base64_encode 在URL地址参数编码上使用

JavaWeb基础 URLEncoder.encode 对字符串进行URL编码

密码中有特殊的字符IOS如何处理 IOS中URL包含中文参数的问题

为啥要对url进行encode

三 . 爬虫 url编码