js中对文字进行编码主要有三个函数:escape,encodeURI,encodeURIComponent;

对应解码为:unescape,decodeURI,decodeURIComponent

这里不在说基本概念(基本概念可以参考w3cohool,里面叙述的已经很详细了),而是侧重于使用和区别去说明:

一、js编码

  1. escape():该种方式对于汉字的编码和上面两个方法的编码结果不一样; 

  注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。

  2. encodeURI() 函数:主要对整个url进行编码,和encodeURIComponent编码中文的返回结果是一样的。

  3. encodeURICompent()函数:主要对参数值进行编码处理

总结:

通过对三个函数的分析,我们可以知道:escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以将参数中的中文、特殊字符进行转义,而不会影响整个URL。(并且这三个编码方式,如encodeURI无关中文编码,只是按照一定规则去编码 ???)

  5. 使用场景:

(1)传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。

  例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a&gt;');</script>

(2)进行url跳转时可以整体使用encodeURI

  例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

(3)js使用数据时可以使用escape

  例如:搜藏中history纪录。

(4)escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
  最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,

  所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)
  escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
  encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

  encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

二、java编码

  1. java.net.URLDecoder.decode(request.getParameter("userName"),"utf-8");

  2. java.net.URLEncoder.encode(request.getParameter("userName"),"utf-8");

三、总结

转载于:https://www.cnblogs.com/damoblog/p/9237187.html

js和java中URI的编码和解码相关推荐

  1. JS 和 Java 中URL特殊字符编码方式

    前几天遇到url特殊字符编码的问题,在这里整理一下: JavaScript 1.  编码 escape(String) 其中某些字符被替换成了十六进制的转义序列. 解码 unescape(String ...

  2. java 转码%2f%_JS和JAVA中常用的编码转码函数

    js中escape,encodeURI,encodeURIComponent函数和unescape,decodeURI和decodeURIComponent函数的功能 1.escape方法对Strin ...

  3. Java中获取GBK编码汉字的拼音首字母(包括生僻字)

    Java中获取GBK编码汉字的拼音首字母(包括生僻字) 前言 代码 结果 前言 网上关于Java中获取汉字的拼音首字母的方法很多,但大多基于GB2312的汉字所属编码位置判断方法,现有一种基于GBK编 ...

  4. php编码 js解码,浅谈php和js中json的编码和解码

    php中 1)编码 $jsonstr = json_encode($array) 2)解码 $arr = json_decode($jsonstr) echo json_encode("中文 ...

  5. java 正则 js_正则表达式在js和java中如何使用

    正则表达式在js和java中如何使用 1.在js中 1.1 Search()方法(字符串方法) search()方法用来查找字符串中匹配的子字符串或符合正则表达式的子字符串,并返回子字符串的起始位置. ...

  6. 解决java中对URL编码的问题

    解决java中对URL编码的问题 参考文章: (1)解决java中对URL编码的问题 (2)https://www.cnblogs.com/a198720/p/4210763.html 备忘一下.

  7. js 编码 php 解码,浅谈php和js中json的编码和解码

    php中 1)编码 $jsonStr = json_encode($array) 2)解码 $arr = json_decode($jsonStr) echo json_encode("中文 ...

  8. Java中的字符集编码入门Java中的增补字符

    转载自:http://jiangzhengjun.iteye.com/blog/512083 Java中的字符集编码入门Java中的增补字符 博客分类: 字符集编码 Java Java号称对Unico ...

  9. python2发送http不编码_[转]Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误. 下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法. 看 ...

最新文章

  1. 转载JQuery 获取设置值,添加元素详解
  2. JAVA数据结构 线性表的链式存储及其实现
  3. linux进程同步/通信,线程同步/通信的区别
  4. 大数据分析币圈动态: ETH、BTC、BCH每秒交易均呈负增长! 以太坊网络传播时间再缩短
  5. #翻译# 关于 Java 性能方面的 9 个谬论
  6. HTML / img src 使用绝对路径注意事项
  7. [luogu-P4299] 首都(并查集 + LCT动态维护树的重心 / 维护虚儿子信息)
  8. Java通用流行框架大全,绝对干货
  9. linux未知设备驱动程序,未知Android设备 - linux mint
  10. thinkphp Hook行为的使用案例
  11. tomcat ajp协议安全限制绕过漏洞_Apache tomcat 文件包含漏洞复现(CVE20201938)
  12. CNN图像处理常用损失函数对比评测
  13. 计算机无法预览文件,win10系统百度网盘文件无法预览的解决方法
  14. Excel里怎么冻结某一行某一列
  15. logistics回归分析——二元逻辑回归
  16. 学习Photoshop的一些网站以及找素材的网站
  17. 游戏蓝牙耳机哪个好用?性价比高的游戏蓝牙耳机推荐
  18. 关于电脑壁纸分辨率低的原因及解决办法(个人感悟,并非系统性的盘点)
  19. 电子行业数字工厂管理系统有哪些优点和不足
  20. shienblink 振动/敲击检测传感器详解

热门文章

  1. debian php redis,debian7.7环境下 源码安装redis以及phpredis扩展
  2. 上海网络推广浅析外链对网站优化的影响有多大?需要注意什么?
  3. 网站推广浅析库克八亿年终奖的背后苹果公司如何展开企业的营销推广
  4. 网站SEO优化中导航对用户体验的重要性
  5. python pycurl_简单谈谈Python的pycurl模块_python
  6. 微软 服务器和工具产品,微软服务器和工具部总裁鲍伯·穆格里亚辞职
  7. css 边缘闪光_css文字渐变+内发光+投影效果
  8. body添加代码 js_hexo 博客添加评论和阅读量
  9. android ping -c 4 -i 1 -w 1000,[Android]ping -c 1 -w 100 sina.cn的解析
  10. Wireshark 过滤 基本语法