网址中为什么会有好多%BE%B2%D0%之类的--URLEncode
urlencode是一个函数,可将字符串以URL编码,用于编码处理。
URL编码(URL encoding),也称作百分号编码(Percent-encoding), 是特定上下文的统一资源定位符 (URL)的编码机制。
适用于统一资源标识符(URI)的编码,也用于为"application/x-www-form-urlencoded"
MIME(多用途互联网邮件扩展类型)准备数据, 因为它用于通过HTTP的请求操作(request)提交HTML表单数据。
现在几乎所有的网站都对url中的汉字和特殊的字符,进行了urlencode操作, 也就是:
http://www.baidu.com/%BE%B2%D0%C4%C0%CF%C8%CB/login/auto/
这个样子的网址,中间%形式的,肯定就是用户的登录名称了吧。
为什么对这些字符进行了urlencode的编码形式,是为了字符编码(gbk、utf8)还是为了不出现特殊的字符在url中吗?
url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。
那哪些字符是需要转化的呢?
ASCII 的控制字符
这些字符都是不可打印的,自然需要进行转化。一些非ASCII字符
这些字符自然是非法的字符范围。转化也是理所当然的了。一些保留字符
很明显最常见的就是“&”了,这个如果出现在url中了,那你认为是url中的一个字符呢,还是特殊的参数分割用的呢就是一些不安全的字符了。
例如:空格。为了防止引起歧义,需要被转化为“+”。
明白了这些,也就知道了为什么需要转化了,而转化的规则也是很简单的。
按照每个字符对应的字符编码,不是符合我们范围的,统统的转化为%的形式也就是了。自然也是16进制的形式,和字符编码无关
通过urlencode的转化规则和目的,我们也很容易的看出,urleocode是基于字符编码的。同样的一个汉字,不同的编码类型,肯定对应不同的urleocode的串。gbk编码的有gbk的encode结果。
tomcat、apache等服务器,接受到字符串后,可以进行decode,但是还是无法解决编码的问题。编码问题,还是需要靠约定或者字符编码的判断解决。
因此,urleocode只是为了url中一些非ascii字符,可以正确无误的被传输,至于使用哪种编码,就不是eocode所关心和解决的问题了。
URLEncode
和URLDecode
用于完成普通字符串和 application/x-www-from-urlencoded
MIME(多用途互联网邮件扩展类型)字符串之间的相互转化
如果传递的字符串中包含非西欧字符的字符串,会被转化成为%XX%XX XX
十六进制的数字
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特殊符号及对应的十六进制值编码:
+
URL 中+号表示空格 %2B- 空格 URL中的空格可以用+号或者编码 %20
- / 分隔目录和子目录 %2F
- ? 分隔实际的 URL 和参数 %3F
- % 指定特殊字符 %25
#
表示书签 %23- & URL 中指定的参数间的分隔符 %26
- = URL 中指定参数的值 %3D
java代码
urlencode编码:就是将字符串以URL编码,一种编码方式,主要为了解决url中中文乱码问题
例如:
String mytext = java.net.URLEncoder.encode("中国", "utf-8"); //urlencode编码
String mytext2 = java.net.URLDecoder.decode(mytext, "utf-8"); //urlencode解码
这两条语句在同一个页面中的话,得到的结果是:
mytext: %E4%B8%AD%E5%9B%BD
mytex2: 中国
网址中为什么会有好多%BE%B2%D0%之类的--URLEncode相关推荐
- php中隐藏网址,是否隐藏前台网址中的index.php文件名 解决方法
是否隐藏前台网址中的index.php文件名,解决方法如下: 第一步:先在网站后台设置隐藏前台网址中的index.php文件名(如图所示). 如果空间不支持,就要按下面步骤操作. 第二步:可以通过UR ...
- php 网址尾部带斜杠和不带区别,网址中带斜杠和不带斜杠的区别
关于网址中带"/"和不带"/"有很多讨论.因为在发外链的时候常常纠结到底要不要带上斜杠"/"? 1.域名后需要加斜杠("/&quo ...
- C++ --取出网址中域名和协议名
取出网址中域名和协议名 tring GetDomain(const string& url)//域名 {size_t pos = url.find("://");if (p ...
- 清洗网址中的垃圾字符
任务5.清洗网址中的垃圾字符 1.在实际开发中经常会使用字符串,由许多单个字符连接而成.字符串可包含任意字符,但这些字符必须包含在一对英文双引号之内,比如"love"." ...
- 13.清洗网址中的垃圾字符
5.清洗网址中的垃圾字符 在实际开发中经常会使用字符串,由许多单个字符连接而成.字符串可包含任意字符,但这些字符必须包含在一对英文双引号之内,比如"love"."泸州@泸 ...
- Chrome 70 将继续在地址栏隐藏网址中的 WWW
(点击上方公众号,可快速关注) 来源:Solidot https://www.solidot.org/story?sid=57954 Google 在本月初释出的 Chrome 69 中引入了一项受争 ...
- 如何去除discuz X2论坛网址中的forum.php
在discuz X2论坛的过程中,直接安装在根目录的可以通过设置应用域名的方法来实现discuz X2论坛网址中完美去掉forum.php.但如果是安装在非根目录下(例如bbs目录下),网址中就会出现 ...
- 巧用excel公式提取网址中的域名---超级好用
巧用excel公式提取网址中的域名-超级好用 经常会整理很多网址,需要按照他们的域名归类,下面是公式 在a1列是我们要整理的网址 b列我们输入公式 =MID(A1,SEARCH("/&quo ...
- 在vue3.0中如何去除网址中的#
vue的history模式的实现 在vue3.0中如何去除网址中的#号 history模式 在vue3.0中如何去除网址中的#号 事情是这样的,最近在用vue写一个商场的项目,当时对于页面网址美观程度 ...
最新文章
- 同时更改一条数据_数据库中的引擎、事务、锁、MVCC(二)
- c++气泡框提示_黄骅屋顶隔热气泡膜厂家,机房专用吸音板_德发防火保温建材
- ArcGIS中数据存放相对路径和绝对路径的区别
- restful rest_HATEOAS的RESTful服务。 超媒体:REST的秘密要素
- 【渝粤题库】广东开放大学 面向对象方法精粹 形成性考核
- java 删除zip文件_Java--字节缓冲流的效率有多高?测试一下
- 跨部门的bug的沟通
- TOP6410上windowsce6.0移植笔记(一)
- linux的守护进程init.d和xinetd.d
- fastboot usb 驱动相关
- 孙鑫 VC++深入详解——学习笔记
- 电路实验---全桥整流电路
- 今天,IT女神们是怎么度过的(文末送礼品)
- 小丁带你走进git的世界三-撤销修改(转)
- mysql 随机分组_mysql分组
- 【转】波利亚酒鬼回家定理的证明
- 算法--UR机器人位姿表示
- ResNet成阿尔法元核心技术 旷视孙剑详解Zero的伟大与局限
- 爬虫及数据分析--当当网
- 使用NLTK做电影评论分析
热门文章
- mysql的密码破解
- Python的人工智能模拟框架
- SLIC算法理解(仅为个人笔记)
- c语言中源文件未编译是什么,源文件未编译什么意思
- 理解体检报告10个必须项目
- Caused by: java.lang.ClassNotFoundException: org.springframework.scheduling.quartz.CronTriggerBean
- tsp java_基于贪心算法求解TSP问题(JAVA)
- XDOJ 综合题 数字分解排序
- Active: inactive (dead)
- 游戏直播的下一站在哪?战旗TV开启线上线下联动