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’);

}

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Eclipse 的快捷键以及文档注释、多行注释的快捷键[通俗易懂]

    Eclipse 的快捷键以及文档注释、多行注释的快捷键[通俗易懂]原文地址:http://my.oschina.net/u/590763/blog/70166一、多行注释快捷键1.选中你要加注释的区域,用ctrl+shift+C或者ctrl+/会加上//注释2.先把你要注释的东西选中,用shit+ctrl+/会加上/*   */注释3.以上快捷在重复按一下就会去掉加上的注释4.要修改在eclispe中的命令的快捷键方式我们只需进

    2022年4月19日
  • javaweb-Lucene-1-61

    javaweb-Lucene-1-61

    2021年5月18日
  • 安防监控项目(Remeo)概要设计

    安防监控项目(Remeo)概要设计1. 项目背景随着人们在家居生活中使用的电器越来越多,由此带来的安全隐患也有了明显的增多。为了降低电器的不合理使用带来的异常情况,大众对家庭智能监控的需求也越来越高。家庭智能监控主要依托摄像头,温湿度传感器等设备实现实时监控和智能报警的功能。RomeoMonitor主要是为模拟是家庭安防监控的简易系统。主要基于温湿度传感器、运动传感器和摄像头、蜂鸣器、LED等硬件作为终端,基于TCP和zig…

    2022年6月28日
  • svn e175002 解决办法_eclipse安装svn插件使用教程

    svn e175002 解决办法_eclipse安装svn插件使用教程昨天同步svn时报了E175002,如图所示

    2022年10月14日
  • Petalinux系列——0.在Docker里玩转PetaLinux

    Petalinux系列——0.在Docker里玩转PetaLinux在Docker里玩转PetaLinux来自https://github.com/alexhegit/https://mp.weixin.qq.com/s/spaq_Sv1giraeIJgsKDQYA简介PetaLinuxPetaLinux是Xilinx推出的针对ZynqSoc,ZynqMPSOC嵌入式开发板的基于Yocto二次封装的LinuxBSP构建工具,支持Ubuntu…

    2022年9月11日
  • BeanUtils中copyProperties的使用[通俗易懂]

    BeanUtils中copyProperties的使用[通俗易懂]BeanUtils中copyProperties的作用是将一个对象中的属性值赋值(拷贝)给另一个对象中对应的属性。其中赋值成功的属性对应的属性名和属性类型必须相同,否则对应的属性值不会从一个对象赋值给另一个对象,但是此时不影响其他属性值的拷贝。1、实体类publicclassModel01{privateStringname;privateintage;

    2022年10月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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