一、前言

讲这3个方法区别的文章太多了,但是大部分写的都很绕。本文试图从实践角度去讲这3个方法。

二、escape和它们不是同一类

简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。

编码之后的效果是%XX或者%uXXXX这种形式。

其中 ASCII字母、数字、@*/+ ,这几个字符不会被编码,其余的都会。

最关键的是,当你需要对URL编码时,请忘记这个方法,这个方法是针对字符串使用的,不适用于URL。

事实上,这个方法我还没有在实际工作中用到过,所以就不多讲了。

三、最常用的encodeURI和encodeURIComponent

对URL编码是常见的事,所以这两个方法应该是实际中要特别注意的。

它们都是编码URL,唯一区别就是编码的字符范围,其中

encodeURI方法不会对下列字符编码  ASCII字母、数字、~!@#$&*()=:/,;?+'

encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!*()'

所以encodeURIComponent比encodeURI编码的范围更大。

实际例子来说,encodeURIComponent会把 http://  编码成  http%3A%2F%2F 而encodeURI却不会。

四、最重要的,我该什么场合用什么方法

区别上面说的很清楚了,接下来从实际例子来说说把。

1、如果只是编码字符串,不和URL有半毛钱关系,那么用escape。

2、如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。

比如

encodeURI("http://www.cnblogs.com/season-huang/some other thing");

编码后会变为

"http://www.cnblogs.com/season-huang/some%20other%20thing";

其中,空格被编码成了%20。但是如果你用了encodeURIComponent,那么结果变为

"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing"

看到了区别吗,连 "/" 都被编码了,整个URL已经没法用了。

3、当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。

var param = "http://www.cnblogs.com/season-huang/"; //param为参数

param = encodeURIComponent(param);

var url = "http://www.cnblogs.com?next=" + param;

console.log(url) //"http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F"

看到了把,参数中的 "/" 可以编码,如果用encodeURI肯定要出问题,因为后面的/是需要编码的

项目实例代码:

JS:向后台传递参数queryString

var queryString = "http://localhost:8082/search.html?q=" + encodeURIComponent($('#'a').val());

java后台:

//接受参数并转码

try{

queryString = new String(queryString.getBytes("iso8859-1"), "utf-8");//utf-8

}catch(Exception e){

e.printStackTrace();

}

java对encodeuri_简单明了区分escape、encodeURI和encodeURIComponent相关推荐

  1. 简单明了区分escape、encodeURI和encodeURIComponent

    一.前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕.本文试图从实践角度去讲这3个方法. 二.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种 ...

  2. escape encodeURI 和encodeURIComponent JS编码

    escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字符串的三个常用的方法,而他们之间的异同却困扰了很多的Javascript初学者, ...

  3. js 编码解码 escape,encodeURI,encodeURIComponent

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...

  4. js 文字转码 escape,encodeURI,encodeURIComponent(marksheng)

    js对文字进行转码的3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1. ...

  5. 简单明了实现Java地图小程序项目

    简单明了实现Java地图小程序项目 ✨博主介绍 前言 地图概述 地图技术 地图应用场景 网约车服务 智能穿戴 智能物流 智能景区 车联网 国内常见地图 地图API与搜索 JS API GL(演示百度地 ...

  6. pattern java怎么用_Pattern Java设计模式23种每个一个举例使用,名称直接对应英文,简单明了 Develop 238万源代码下载- www.pudn.com...

    文件名称: Pattern下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 156 KB 上传时间: 2014-05-17 下载次数: 2 提 供 者: 王小雄 详 ...

  7. java中等效encodeuri_[Java教程]encodeURI 和encodeURIComponent

    [Java教程]encodeURI 和encodeURIComponent 0 2015-12-03 19:00:31 转自zccst的又一次掉进encodeURIComponent的坑里了 问题: ...

  8. 如何用Java编写一个简单的服务器和客户机

    今天我要向大家介绍的是自己编写的一个比较简单的服务器和客户机程序,注意一下哦,比较简单.好了,闲话休提,砸门直入主题. 小编先从客户机和服务器的模型开始讲解.简单来说,我们实现的这种模型呢,我们每一个 ...

  9. Java中的简单工厂模式(转)

    Java中的简单工厂模式 举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 话说:"天地开辟,未有人民,女娲抟土为人."女娲需要用土造出一个个的人,但在女娲造出人之前, ...

最新文章

  1. yii2服务器无法加载文件,yii2查看服务器500错误的方法
  2. VC 单文档程序 隐藏程序及任务栏图标
  3. python 引用传递和值传递(实参,形参)
  4. Citrix Reciever更改https为http模式
  5. bzoj1001:[BeiJing2006]狼抓兔子
  6. scrum in agile development
  7. 专有网络(VPC)的六大应用场景
  8. OpenCV访问像素的三种方法
  9. 人群与网络:关系的平衡
  10. 搭建MySQL高可用架构MHA
  11. error: ac_nonexistent.h: No such file or directory
  12. 火山PC模拟键盘操作
  13. 液晶电视TCON板原理讲解<转>
  14. 【Dynamics365】创建报表
  15. 手机app邮箱如何和学校邮箱自动同步
  16. 129、易燃气体的分级
  17. 动画小视频制作其实很简单,小白也能快速上手 | 万彩动画大师
  18. 转 《光明日报》:“大数据面前,统计学的价值在哪里”
  19. QT+OSG/osgEarth编译之三十八:Snappy+Qt编译(一套代码、一套框架,跨平台编译,版本:Snappy-1.1.9)
  20. Transform 被废弃,ASM 如何适配?

热门文章

  1. war3宽屏补丁(已更新)
  2. [深度学习] 基于切片辅助超推理库SAHI优化小目标识别
  3. Failed to connect to github.com port 443: Operation timed out
  4. 一键多值的Map~~
  5. office word使用技巧汇总
  6. 如何批量将条形码输出为PNG图片
  7. android开源的酷炫的交互动画和视觉效果:Interactive-animation
  8. java操作pdf制作电子签章
  9. 【Modelsim仿真bdf文件(不正规方法)】
  10. 让北大青鸟网络工程师飞得更高更快!