python 字符转义(url中文转义)

URL特殊字符需转义1、空格换成加号(+)2、正斜杠(/)分隔目录和子目录3、问号(?)分隔URL和查询4、百分号(%)制定特殊字符5、#号指定书签6、&号分隔参数转义字符的原因:如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数…

大家好,又见面了,我是你们的朋友全栈君。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’);

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129540.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python进阶(6)深拷贝和浅拷贝[通俗易懂]

    python进阶(6)深拷贝和浅拷贝[通俗易懂]深拷贝和浅拷贝不管对于浅拷贝、还是深拷贝,针对不可变对象str、int、tuple(有点特殊)、boolean,它的内存地址是不变的,拷贝的仅仅是值importcopya=1b=co

  • 中国2000年以来,发行的货币总量

    中国2000年以来,发行的货币总量年份货币总量(单位:万亿元)GDP增长率200013.2498.5%200115.2898.3%200218.3259.1%200321.92310%200425.32

  • 采用虚拟存储技术_虚拟存储管理

    采用虚拟存储技术_虚拟存储管理虚拟存储技术(VIRTUALMEMORY)所谓的虚拟存储技术是指:当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不存在内存中时,由操作系统自动完成将它们从磁盘调入内存的工作。虚拟地址空间—–分配给进程的虚拟内存虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。

  • 7折怎么用计算机,美国联想八通道7折好价,海淘Thinkpad X260 笔记本电脑开箱简评(附齐购物到货过程)…

    7折怎么用计算机,美国联想八通道7折好价,海淘Thinkpad X260 笔记本电脑开箱简评(附齐购物到货过程)…美国联想八通道7折好价,海淘ThinkpadX260笔记本电脑开箱简评(附齐购物到货过程)2016-06-0810:30:1896点赞288收藏127评论接上一篇购物过程贴我擦,你有完没完!!!五、转运过程(补齐剩余回国、清关、缴税、到货过程)(一)简要说明电脑到达转运仓库后,会给你绑定的电话发送一条提醒短信。本人在5月12日收到短信通知,本想给大家找找短信,都怪我手太贱已删除,哎。…

  • 大数据,云计算和物联网,三者之间的关系是什么?

    大数据,云计算和物联网,三者之间的关系是什么?大数据,云计算,物联网,这些听着耳熟吗?你知道这些新兴产业各自的特点吗?今天,咱们就从最基本的概念着手,给大家科普一下!一、最热门的人工智能目前为止,人类还没能给出统一的定义。但通常来说,凡是使用机器代替人类实现认知、识别、分析、决策等功能,均可认为使用了人工智能技术。如今人工智能商业化正在各个领域中快速推进:记得哦!人工智能主要包括软件及信息技术服务业、计算机、高端制造等行业。二、大数…

  • 怎么清除火狐浏览器的cookie?

    怎么清除火狐浏览器的cookie?

    2021年10月15日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号