博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URL编码
阅读量:4933 次
发布时间:2019-06-11

本文共 2536 字,大约阅读时间需要 8 分钟。

Base64编码

所谓Base64,就是说选出64个字符----小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)----作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。

  1. 第一步,将每三个字节作为一组,一共是24个二进制位。
  2. 第二步,将这24个二进制位分为四组,每个组有6个二进制位。
  3. 第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节。
  4. 第四步,根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。

中文如何base64编码

首先把中文进行字符编码。不同的编码方法得到不同的二进制。再对二进制进行编码。

"严"的utf-8编码为E4B8A5,写成二进制就是三字节的"11100100 10111000 10100101"将这个24位的二进制字符串,按照第3节中的规则,转换成四组一共32位的二进制值"00111001 00001011 00100010 00100101",相应的十进制数为57、11、34、37,它们对应的Base64值就为5、L、i、l。

所以,汉字"严"(utf-8编码)的Base64值就是5Lil。

URL编码

为啥url需要编码呢??

"...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL."

"只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。"

但是却没规定怎么样进行编码。

目前比较通用的编码是对除了a-zA-Z0-9.-_以外,都进行%替换。

ios进行url编码

  1. 逐个替换

    - (NSString *)urlencode {NSMutableString *output = [NSMutableString string];const unsigned char *source = (const unsigned char *)[self UTF8String];int sourceLen = strlen((const char *)source);for (int i = 0; i < sourceLen; ++i) {    const unsigned char thisChar = source[i];    if (thisChar == ' '){        [output appendString:@"+"];    } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||                (thisChar >= 'a' && thisChar <= 'z') ||               (thisChar >= 'A' && thisChar <= 'Z') ||               (thisChar >= '0' && thisChar <= '9')) {        [output appendFormat:@"%c", thisChar];    } else {        [output appendFormat:@"%%%02X", thisChar];    }}return output;}
  2. 使用CFURLCreateStringByAddingPercentEscapes函数

    NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(                        NULL,                        (CFStringRef)unencodedString,                        NULL,                        (CFStringRef)@"!*'();:@&=+$,/?%#[]",                        kCFStringEncodingUTF8 );
  3. 使用stringByAddingPercentEncodingWithAllowedCharacters

    NSString *unescaped = @"http://www";NSString *escapedString = [unescaped stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];NSLog(@"escapedString: %@", escapedString);
    URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}URLHostAllowedCharacterSet      "#%/<>?@\^`{|}URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}URLQueryAllowedCharacterSet     "#%<>[\]^`{|}URLUserAllowedCharacterSet      "#%/:<>?@[\]^`

转载于:https://www.cnblogs.com/huahuahu/p/URL-bian-ma.html

你可能感兴趣的文章