URL编码

原链接在这里

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      "#%/<>[email protected]\^`{|}
    URLPasswordAllowedCharacterSet  "#%/:<>[email protected][\]^`{|}
    URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}
    URLQueryAllowedCharacterSet     "#%<>[\]^`{|}
    URLUserAllowedCharacterSet      "#%/:<>[email protected][\]^`
    
时间: 2024-12-08 00:21:54

URL编码的相关文章

URL编码与解码

通常如果一样东西需要编码,说明这样东西并不适合传输.原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义. 例如Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8.如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码. 又如,Url的编码格式采用的是ASC

url 编码(percentcode 百分号编码)

http://www.imkevinyang.com/2009/08/%E8%AF%A6%E8%A7%A3javascript%E4%B8%AD%E7%9A%84url%E7%BC%96%E8%A7%A3%E7%A0%81.html 摘要 本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和编解码相关的几对函数escape / unescape,encodeURI / decodeURI和encodeUR

[iOS]URL编码和解码

1. 首先来看下什么样的是URL编码(字符串中带有%22 类似这样的) NSString *str = @"http://m.tuniu.com/api/home/data/index/c/%7B%22v%22%3A%227.1.0%22%2C%22ct%22%3A20%2C%22dt%22%3A1%2C%22p%22%3A11210%2C%22cc%22%3A2500%7D/d/%7B%22clientModel%22%3A%22HONOR+H30-L01%22%2C%22width%22%3

了解URL编码的基本概念,在javascript和java程序中使用内置的API进行编码和解码

1.URL编码的基本概念 URL只能使用US-ASCII 字符集来通过因特网进行发送.由于URL常常会包含 ASCII 集合之外的字符,URL必须转换为有效的 ASCII 格式.URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符.URL 不能包含空格,URL 编码通常使用 + 来替换空格.所谓URL编码,就是将非US-ASCII字符和US-ASCII中的特殊字符,用相应的字符集编码来表示.比如,汉字"你",如果用UTF-8编码,出现在URL

【转】C/C++ URL编码,解码(提取自PHP)

//解码 //头文件自己加上的 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <string> #include <iostream> using namespace std; /* {{{ php_htoi  */ static int php_htoi(char *s) { int value; int c; c = ((unsigned char *)

URL编码与两次encodeURI

当使用地址栏提交查询参数时,如果不编码,非英文字符会按照操作系统的字符集进行编码提交到服务器,服务器会按照配置的字符集进行解码,所以如果两者不一致就会导致乱码. encodeURI函数采用UTF-8对URL进行编码,所以如果服务器在进行解码时使用的是其他的编码方式就会出现乱码,默认的服务器配置的解码字符集都不是UTF-8,所以大部分情况下地址栏提交中文查询参数时会产生乱码:针对这种情况,可以连续使用两次encodeURI在客户端(主要指浏览器)对非英文字符进行编码,然后在服务端使用java.ne

百度移动版的url编码解码代码

1 var decode = function(m) { 2 try { 3 m = decodeURIComponent(m); 4 } catch(e) {} 5 var s = m.split("%"); 6 if (s.length > 1) { 7 s.shift(); 8 for(var i = 0; i < s.length; i++) { 9 var t = s[i]; 10 t = parseInt(t, 16); 11 t = t + 256; 12 t

URL 编码

简介 当我们每天上网冲浪时,有一些技术我们无时无刻不在面对.有数据本身(网页),数据的格式化,能够让我们获取数据的传输机制,以及让Web网络能够真正成为Web的基础及根本:从一页到另一页的链接.这些链接都是URL. 通用URL语法 我敢说每个人在其一生中至少见过一次URL.比如"http://www.google.com",就是一个URL.一个URL是一个统一资源定位器 ,事实上它指向了一个网页(大多数情况下).实际上,自从1994年的第一版规范开始,URL就有了一个良好定义的结构.

Web开发者应知的URL编码知识(转)

原文出处: lunatech   译文出处:oschina - 桔子, lwei, 史涛, Khiyuan, super0555, LinuxQueen, 抛出异常的爱 本文首先阐述了人们关于统一资源定位符(URL)编码的普遍的误读,其后通过阐明HTTP场景下的URL encoding 来引出我们经常遇到的问题及其解决方案.本文并不特定于某类编程语言,我们在Java环境下阐释问题,最后从Web应用的多个层次描述如何解决URL编码的问题来结尾. 简介 当我们每天上网冲浪时,有一些技术我们无时无刻不

url编码和解码

使用js在各个html页面之间传递参数的时候,有些特殊字符传过去再接收就会出现问题,最好的做法就是传递参数之前先编码,接收到之后再解码.搜集了一下常用的几个函数 1.escape http://www.w3school.com.cn/jsref/jsref_escape.asp 2.encodeURI http://www.w3school.com.cn/jsref/jsref_encodeuri.asp 3.encodeURIComponent http://www.w3school.com.