`
cooler1217
  • 浏览: 366189 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

python url 转义

 
阅读更多
URL特殊字符需转义  

1、空格换成加号(+)  
2、正斜杠(/)分隔目录和子目录  
3、问号(?)分隔URL和查询  
4、百分号(%)制定特殊字符  
5、#号指定书签  
6、&号分隔参数 

转义字符的原因:

如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如
表单的action为list.jsf?act=go&state=5
则提交时通过request.getParameter可以分别取得act和state的值。
如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义

url转义字符原理:

将这些特殊的字符转换成ASCII码,格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。

URL特殊符号及对应的十六进制值编码:  

1. +  URL 中+号表示空格 %2B  
2. 空格 URL中的空格可以用+号或者编码 %20  
3. /  分隔目录和子目录 %2F   
4. ?  分隔实际的 URL 和参数 %3F   
5. % 指定特殊字符 %25   
6. # 表示书签 %23   
7. & URL 中指定的参数间的分隔符 %26   
8. = URL 中指定参数的值 %3D 
解决方法如下(以+号为例):
方法一、修改客户端,将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了。
方法二、修改服务器端,将空格替换为“+”,这种方式只适用于参数中有‍“+”没有空格的情况。
例子:
String a = reuqest.‍getParameter("clientStr")‍.replace(' ','+');
如果客户端为clientStr=test+OK,那么a的值为test+OK;

方法三、修改服务器端,将获取参数的方法由‍reuqest.‍getParameter改为‍request.getQueryString().substring(0),然后对得到的字符串进行解析。
例子:
‍‍String a =request.getQueryString().substring(0);
‍如果客户端为clientStr=test+OK,那么a的值为‍clientStr=test+OK,需要再解析一下,
a=a.‍substring(10);得到a的值为‍test+OK。

附:一个JS,用来转义URL中特殊字符的。

‍function URLencode(sStr)  

    return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F'); 
}
分享到:
评论

相关推荐

    在python中用url_for构造URL的方法

    2)URL构建会转义特殊字符和Unicode数据, 这些工作不需要我们自己处理。 下面是个例子: from flask import Flask,url_for app = Flask(__name__) @app.route('/example/1/') def example(id): pass with app....

    【JavaScript源代码】基于网址URL中特殊字符转义编码.docx

     目录 网址URL中特殊字符转义编码URL特殊字符转义,URL中一些字符的特殊含义,基本编码规则如下:如果需要在URL中用到,需要将这些特殊字符换成相应的十六进制的值预备知识 为什么需要Url编码 哪些字符需要编码 US...

    url参数中有+、空格、=、%、、#等特殊符号的问题解决

    解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它字符替代吧,或用全角的。 + URL 中+号表示空格 + 空格 URL中的空格可以用+号或者编码 / 分隔目录和子目录 / ? 分隔实际的...

    pygooglenews - Google News的非官方Python库-python

    用于搜索功能的 URL 转义用户输入助手 对搜索功能的广泛支持,使其易于使用:标题匹配中的精确匹配、url 匹配等按日期范围搜索(from_ & to_)、最新发布(何时)解析的子文章。 几乎总是,除搜索之

    python入门到高级全栈工程师培训 第3期 附课件代码

    08 django的url控制系统 09 django的urlConf补充 第50章 01 django之视图函数的介绍 02 django视图之redirec 03 django模板之变量 04 django模板之过滤器 05 django模板之控制语句if和for循环 06 django模板之标签...

    使用Python爬虫库requests发送请求、传递URL参数、定制headers

    首先我们先引入requests模块 import requests 一、发送请求 r = requests.get('https://api.github.com/events') # GET请求 r = requests.post('http://httpbin.org/post', data = {'key':'value'}) # POST请求 ...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    JavaScript序列化及转义 开小差之自动登录抽屉并点赞 eval以及时间操作 JavaScript作用域 JavaScript面向对象及原型 Dom选择器以及内容文本操作 Dom样式操作 Dom属性及创建标签 Dom提交表单及其他 Dom事件操作 Dom...

    CommonMark-py:因rtfdCommonMark-py而贬值

    目前,我们处于stmd.js的相同开发阶段(实际上有点领先,因为我们已经实现了HTML实体转换和href URL转义)。 由于3.4之前的Python版本使用的是过时的(即不是HTML5规范)实体转换,因此我已经将3.4的实现转换为单个...

    migration:数据库迁移。 CLI和Golang库

    迁移 用Go编写的数据库迁移。 用作或导入为。 Migrate从读取迁移,并将迁移以正确的顺序应用于。 驱动程序是“笨拙的”,迁移会将所有内容粘合在一起,并确保逻辑是防弹的。...$ python3 -c ' import urllib.par

    正则表达式经典实例.pdf

    5.14 对正则表达式元字符进行转义 第6章 数字 6.1 整数 6.2 十六进制数字 6.3 二进制数 6.4 删除前导 6.5 位于某个特定范围之内的整数 6.6 在某个特定范围之内的十六进制数 6.7 浮点数 6.8 含有千位分隔符的数 6.9 ...

    正则表达式经典实例

    5.14 对正则表达式元字符进行转义 第6章 数字 6.1 整数 6.2 十六进制数字 6.3 二进制数 6.4 删除前导 6.5 位于某个特定范围之内的整数 6.6 在某个特定范围之内的十六进制数 6.7 浮点数 6.8 含有千位分隔符...

    pyxdg-open:xdg-open 克隆

    基本上确定如何使用系统桌面文件打开和打开给定的 URL。 它具有可自定义的搜索顺序、自定义 mime 到应用程序调用或桌面文件映射以及正确打开多个文件。 它还支持列表文件(如 defaults.list),因此它应该可以使用...

    JiraScripts:一组用于Jira的加速测试管理过程的实用程序

    吉拉剧本 一组脚本,可以帮助您使用JIRA中的Zephyr测试插件 内容 安装方式 配置 用法 安装 为了使用此脚本,您必须在计算机上安装Python...base_url-JIRA实例的URL,例如 issue_type_key-“测试”类型故障单的JIRA问题

    SublimeStringEncode:使用转换将字符从一种“编码”转换为另一种(认为HTML实体,而不是字符编码)

    字符串编码 ... 例如,您可能不应该在整个文本文档上使用URL Decode 。 您还可以对剪贴板进行编码,使用string_encode_paste命令,将显示一个菜单来选择编码,剪贴板将被编码并插入。 安装 使用程序包控制

    siyavula:实时代码已启动

    这个应用程序只需要一个 Wikipedia URL,并返回一个 html 页面,其中包含提供的 Wikipedia URL 目录的未转义 html。目前使用Python <http> _ Django <http> _ - 金字塔版本即将推出Foundation Zurb CSS Framework ...

    精通正则表达式~~~

    神奇的转义... 22 基础知识拓展... 23 语言的差异... 23 正则表达式的目标... 23 更多的例子... 23 正则表达式术语汇总... 27 改进现状... 30 总结... 32 一家之言... 33 第2章:入门示例拓展.... 35 ...

    freemarker总结

    <#if animals.python.price Pythons are cheaper than elephants today. Pythons are not cheaper than elephants today. </#if> 2、 switch , case , default , break指令 这些指令显然是分支...

Global site tag (gtag.js) - Google Analytics