何时需要做urlEncode,以及为什么要做
在RFC1738中,对于URL可以使用的字符集做了如下规定:
“
只有0-9a-zA-Z的字母以及$-_.+!*'(),"这几个特殊字符
”
而在html4中扩展了所有的unicode character set能够在url中使用。
那么到底有哪些字符需要encoded呢?
1. ascii control characters
原因是:他们不可打印,
字符范围iso-8859-1的00-1F 以及7F
2. non-ascii characters:
原因:这些字符因为不在ascii集合中不被认为在url中是合法的
字符范围: iso-latin的80-FF范围
3. reserved characters:
原因:URL使用部分预留的字符来定义url的语法。当这些字符在url中不被当作其特殊角色时,他们必须被encoded
字符范围: $, &,+, , /,:,;,=,?,@
| Character | Code Points (Hex) |
Code Points (Dec) |
|---|---|---|
| Dollar ("$") Ampersand ("&") Plus ("+") Comma (",") Forward slash/Virgule ("/") Colon (":") Semi-colon (";") Equals ("=") Question mark ("?") 'At' symbol ("@") |
24 26 2B 2C 2F 3A 3B 3D 3F 40 |
36 38 43 44 47 58 59 61 63 64 |
4.unsafe characters
原因: 部分字符如果在url中可能导致歧义。这些字符也必须被encoded:
| Character | Code Points (Hex) |
Code Points (Dec) |
Why encode? |
|---|---|---|---|
| Space | 20 | 32 | Significant sequences of spaces may be lost in some uses (especially multiple spaces) |
| Quotation marks 'Less Than' symbol ("<") 'Greater Than' symbol (">") |
22 3C 3E |
34 60 62 |
These characters are often used to delimit URLs in plain text. |
| 'Pound' character ("#") | 23 | 35 | This is used in URLs to indicate where a fragment identifier (bookmarks/anchors in HTML) begins. |
| Percent character ("%") | 25 | 37 | This is used to URL encode/escape other characters, so it should itself also be encoded. |
| Misc. characters: Left Curly Brace ("{") Right Curly Brace ("}") Vertical Bar/Pipe ("|") Backslash ("\") Caret ("^") Tilde ("~") Left Square Bracket ("[") Right Square Bracket ("]") Grave Accent ("`") |
7B 7D 7C 5C 5E 7E 5B 5D 60 |
123 125 124 92 94 126 91 93 96 |
Some systems can possibly modify these chara |
如何做url encoded呢?
url encoding of a character包含一个%号,并且以iso-latin的16进制两位数来跟进
例如:
space = %20
使用javascript的
encodeURIComponent 函数来实现
何时需要做urlEncode,以及为什么要做的更多相关文章
- 别做操之过急的”无效将军”,做实实在在的”日拱一卒” zz
别做操之过急的”无效将军”,做实实在在的”日拱一卒” 前天在网上看到一句话很不错,拿来和大家分享,同时用我的“大叔”三观来解读这句话. 这句话是:“我们不需要操之过急的”无效将军”,我们需要实实在在的 ...
- .net做的exe和electron做的exe之间的通信问题
目前工作遇到个问题: .net做的exe和electron做的exe,之间进行数据通信 目前找到两个相对方便的方法: 1.命名管道 ①.net命名管道资料: 进程间通信 - 命名管道实现 ②elect ...
- 子查询 做where条件 做 from的临时表 ,做select的一个字段 等
子查询 做where条件 做 from的临时表 ,做select的一个字段 等
- 2015.7.8(千股跌停!做T不应当只做中色,中国软件)
2015.7.81.今天开盘所有的股票全部跌停,真是一大奇观! 今天中色股份和以往不同买卖盘为正! 但是中色的爬升比较慢,价位始终没有高过昨天的收盘价————这种情况下是否应该做T呢? 2.做T不应当 ...
- 为什么位运算可以实现加法(1、 不考虑进位的情况下位运算符中的异或^可以表示+号)(2、 位运算符中的与运算符&和左移运算符<<可以模拟加法中的进位)(3、位运算不仅可以做加法,还可以做其它的乘法减法等:计算机本质是二进制运算)
为什么位运算可以实现加法(1. 不考虑进位的情况下位运算符中的异或^可以表示+号)(2. 位运算符中的与运算符&和左移运算符<<可以模拟加法中的进位)(3.位运算不仅可以做加法,还 ...
- RAID5的创建(5块磁盘,三块做raid,两块做备份)
RAID5的创建(5块磁盘,三块做raid,两块做备份) 第一步:参考我的上一篇博客,用同样的方法添加5块硬盘.地址如下: https://www.cnblogs.com/Feng-L/p/11735 ...
- C++代做,C++编程代做,C++程序代做,留学生C++ Lab代写
C++代做,C++编程代做,C++程序代做 我们主要面向留学生,广泛接美加澳国内港台等地编程作业代写,中英文均可. C语言代写 C++代写 Python代写 Golang代写 Java代写 一年半的时 ...
- buu学习记录(下)(做题是不可能做题的)
目录: easy_calc 禁止套娃 EasyWeb Babysqli Easyweb easy_serialize_php 我有一个数据库 SSRFme 枯燥的抽奖 EasyPHP 题目解析: ea ...
- 【产品对比分析】See做了明星衣橱想做的东西?
不断地发现.联想.思考,让学到的东西互通起来吧! 先来两张See的界面图镇楼—— See简介: See是一个专注找同款的时尚社区,主打功能是一键拍照找同款,由社区为你提供最佳商品或 ...
随机推荐
- Homebrew下安装的软件自启动服务管理工具:Launchrocket
帮助管理Homebrew安装的服务的软件,比如使用Homebrew安装的Mysql.Redis.MongoDB,传统方式需要使用命令行的命令,而使用LaunchRocket则可以在图形界面中进行管理. ...
- Capture Conversion解读
Let G name a generic type declaration with n type parameters A1,...,An with corresponding bounds U1, ...
- Windows下的SASS环境搭建
虽然眼下 CSS 预编译框架不少,但 SASS 已经逐渐成为主流了,为了更好的适应社会,满足市场需求,获取新技能是必须的. 之前一直想使用 SASS,但都碍于它需要在 ruby 环境下编译而退缩了,这 ...
- 使用 JFlex
参数设置和声明段 %% 词法规则段 用户代码段这个段中的所有内容将被拷贝到生成的词法类的类声明之前.在这个段中,常见的是 package 和 import 语句.我们的词法说明在这个段中引入(impo ...
- Hibernate 查询语句基本用法
转发: http://459104018-qq-com.iteye.com/blog/720538
- Go RabbitMQ 工作队列 (二)
rabbitMQ工作队列 在之前内容中我们通过一个队列实现了消息的发送跟接收.接下来我们创建工作队列(Work Queue),用于在多个工作者之间分配耗时的任务 工作队列(任务队列)背后的核心主要是避 ...
- c之指针与数组(2)Dynamic Data Structures: Malloc and Free--转载
http://www.howstuffworks.com/c29.htm http://computer.howstuffworks.com/c.htm Dynamic Data Structures ...
- vue中添加Echarts图表的使用,Echarts的学习笔记
项目中需要使用一些折线图.柱状图.饼状图等等,之前使用过heightCharts(关于heightCharts请看我的另一篇 http://www.cnblogs.com/jasonwang2y60/ ...
- OpenStack Object Storage(Swift)概述
概述 OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性. Swift并不是文件系统或者实时 ...
- 再说优化MySQL索引
这几天开发尤其重视数据库索引的优化,是一件好事情,开发特意提过来几个要删除的索引,oh!我的佛陀呀!历史上出现过因为评估不到位,删索引引发故障的案例.那么有什么办法可以评估索引是否合理呢? perco ...