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所关心和解决的问题了。

URLEncodeURLDecode用于完成普通字符串和 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特殊符号及对应的十六进制值编码:

  1. + URL 中+号表示空格 %2B
  2. 空格 URL中的空格可以用+号或者编码 %20
  3. / 分隔目录和子目录 %2F
  4. ? 分隔实际的 URL 和参数 %3F
  5. % 指定特殊字符 %25
  6. # 表示书签 %23
  7. & URL 中指定的参数间的分隔符 %26
  8. = 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相关推荐

  1. php中隐藏网址,是否隐藏前台网址中的index.php文件名 解决方法

    是否隐藏前台网址中的index.php文件名,解决方法如下: 第一步:先在网站后台设置隐藏前台网址中的index.php文件名(如图所示). 如果空间不支持,就要按下面步骤操作. 第二步:可以通过UR ...

  2. php 网址尾部带斜杠和不带区别,网址中带斜杠和不带斜杠的区别

    关于网址中带"/"和不带"/"有很多讨论.因为在发外链的时候常常纠结到底要不要带上斜杠"/"? 1.域名后需要加斜杠("/&quo ...

  3. C++ --取出网址中域名和协议名

    取出网址中域名和协议名 tring GetDomain(const string& url)//域名 {size_t pos = url.find("://");if (p ...

  4. 清洗网址中的垃圾字符

    任务5.清洗网址中的垃圾字符 1.在实际开发中经常会使用字符串,由许多单个字符连接而成.字符串可包含任意字符,但这些字符必须包含在一对英文双引号之内,比如"love"." ...

  5. 13.清洗网址中的垃圾字符

    5.清洗网址中的垃圾字符 在实际开发中经常会使用字符串,由许多单个字符连接而成.字符串可包含任意字符,但这些字符必须包含在一对英文双引号之内,比如"love"."泸州@泸 ...

  6. Chrome 70 将继续在地址栏隐藏网址中的 WWW

    (点击上方公众号,可快速关注) 来源:Solidot https://www.solidot.org/story?sid=57954 Google 在本月初释出的 Chrome 69 中引入了一项受争 ...

  7. 如何去除discuz X2论坛网址中的forum.php

    在discuz X2论坛的过程中,直接安装在根目录的可以通过设置应用域名的方法来实现discuz X2论坛网址中完美去掉forum.php.但如果是安装在非根目录下(例如bbs目录下),网址中就会出现 ...

  8. 巧用excel公式提取网址中的域名---超级好用

    巧用excel公式提取网址中的域名-超级好用 经常会整理很多网址,需要按照他们的域名归类,下面是公式 在a1列是我们要整理的网址 b列我们输入公式 =MID(A1,SEARCH("/&quo ...

  9. 在vue3.0中如何去除网址中的#

    vue的history模式的实现 在vue3.0中如何去除网址中的#号 history模式 在vue3.0中如何去除网址中的#号 事情是这样的,最近在用vue写一个商场的项目,当时对于页面网址美观程度 ...

最新文章

  1. 同时更改一条数据_数据库中的引擎、事务、锁、MVCC(二)
  2. c++气泡框提示_黄骅屋顶隔热气泡膜厂家,机房专用吸音板_德发防火保温建材
  3. ArcGIS中数据存放相对路径和绝对路径的区别
  4. restful rest_HATEOAS的RESTful服务。 超媒体:REST的秘密要素
  5. 【渝粤题库】广东开放大学 面向对象方法精粹 形成性考核
  6. java 删除zip文件_Java--字节缓冲流的效率有多高?测试一下
  7. 跨部门的bug的沟通
  8. TOP6410上windowsce6.0移植笔记(一)
  9. linux的守护进程init.d和xinetd.d
  10. fastboot usb 驱动相关
  11. 孙鑫 VC++深入详解——学习笔记
  12. 电路实验---全桥整流电路
  13. 今天,IT女神们是怎么度过的(文末送礼品)
  14. 小丁带你走进git的世界三-撤销修改(转)
  15. mysql 随机分组_mysql分组
  16. 【转】波利亚酒鬼回家定理的证明
  17. 算法--UR机器人位姿表示
  18. ResNet成阿尔法元核心技术 旷视孙剑详解Zero的伟大与局限
  19. 爬虫及数据分析--当当网
  20. 使用NLTK做电影评论分析

热门文章

  1. mysql的密码破解
  2. Python的人工智能模拟框架
  3. SLIC算法理解(仅为个人笔记)
  4. c语言中源文件未编译是什么,源文件未编译什么意思
  5. 理解体检报告10个必须项目
  6. Caused by: java.lang.ClassNotFoundException: org.springframework.scheduling.quartz.CronTriggerBean
  7. tsp java_基于贪心算法求解TSP问题(JAVA)
  8. XDOJ 综合题 数字分解排序
  9. Active: inactive (dead)
  10. 游戏直播的下一站在哪?战旗TV开启线上线下联动