java 编码 js解码_js和java中URI的编码和解码

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才不会被#等特殊字符截断。

例如:

(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");

三、总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文教你使用java开发一款推箱子游戏

导读:社会在进步,人们生活质量也在日益提高。高强度的压力也接踵而来。社会中急需出现新的有效方式来缓解人们的压力。此次设计符合了社会需求,Java推箱子游戏可以让人们在闲暇之余,体验游戏的乐趣。具有操作简单,易于上手的特点。…

java序列化深克隆_克隆可序列化和不可序列化的Java对象

java序列化深克隆开发人员经常依靠3d方库来避免重新发明轮子,尤其是在Java世界中,Apache和Spring这样的项目如此盛行。 在处理这些框架时,我们通常很少或根本无法控制其类的行为。 这有时会导致问题。 例如,如果您想深克隆一个不提…

ukt机器人_doc/readme/feishu.md · 贫道法号-乱来/PrometheusAlert - Gitee.com

PrometheusAlert全家桶飞书配置说明-----------------飞书机器人目前支持V1和V2两个版本,区别在于地址的不同V1地址:https://open.feishu.cn/open-apis/bot/hook​/​xxxxxxxxxxxxxxxxxxV2地址:https://open.feishu.cn/open-apis/bot/v2/hook…

uiautomator的坑和AAPT命令方式启动一个应用程序

最近在使用UIautomator完成公司的一个主流程的自动化,因为不适用H5和IOS所以会放弃这个工具的使用,现在记录在使用uiautomator的一些问题: 案列1:使用命令去启动要运用的apk包 使用命令方式启动,可以使用SDK中自带的aa…

一文教你用java实现即时通讯软件的设计(附下载源码)

导读:即时通讯软件即所谓的聊天工具,其主要用途是用于文字信息的传递与文件传输。使用eclipse作为即时通讯软件的开发工具,使用Socket建立通讯渠道,多线程实现多台计算机同时进行信息的传递,swing技术等进行实际开发相…

在Python,Java和Kotlin中标记参数和重载

在多种语言之间跳来跳去可以帮助您注意到不同语言的习惯用法和最佳做法之间的某些差异。 比较有趣的差异之一与一个函数执行多项操作有关。 Python 我们先来看一下Python。 Python实际上无法重载,因为用相同的名称定义一个新的函数/方法只会覆盖前一个函数/方法。 …

vue 扫码页面限制区域_Vue.js 单页面多路由区域操作的实例详解

单页面多路由区域操作在一个页面中有两个及以上的区域,需要通过设置路由的index.js,来操作这些区域的内容app.vue 中设置:index.js中设置:import vue from vueimport router from vue-routerimport hello from /components/helloi…

Divide and conquer:Drying(POJ 3104)

烘干衣服 题目大意:主人公有一个烘干机,但是一次只能烘干一件衣服,每分钟失水k个单位的水量,自然烘干每分钟失水1个单位的水量(在烘干机不算自然烘干的那一个单位的水量),问你最少需要多长时间烘…

c#string倒数第二位插入字符_c#string倒数第二位插入字符_C#利用String类的IndexOf、LastIndexOf、...

一、String.IndexOfString.IndexOf 方法 (Char, Int32, Int32)报告指定字符在此实例中的第一个匹配项的索引(从0开始)。搜索从指定字符位置开始,并检查指定数量的字符位置。String.IndexOf(value, startIndex, count)参数value:要查找的 Unicode 字符。s…

使用所学的javaWeb知识,实现一个小型的记账管理系统

导读:控制过度消费通过记账,你会很清楚地知道自己的钱都用来做了什么,关于每分钱的去处心中都明明白白, 哪些是必要的开销,哪些是非理性的、应该避免的花费,分别占有多大的比例。有专家统计,个人 或者家庭的年节余比例要达到收人的40%才是正常的。参照这样的比例,对你找…

java小细节_为什么我喜欢Java的细节

java小细节他们说,Java太冗长了。 您可以找到Hello World程序的比较,这些程序在ruby中使用2行,在Java中使用10行,而要读取文件,您需要使用Java 20行和php中1行。 尽管示例经常被夸大(例如,计算导…

java 的 AccessController.doPrivileged使用

AccessController.doPrivileged意思是这个是特别的,不用做权限检查. 在什么地方会用到呢:加入1.jar中有类可以读取一个文件,现在我们要使用1.jar去做这个事情.但是我们的类本生是没有权限去读取那个文件的,一般情况下就是眼睁睁的看着了. 但是jiava提供了doPrivileged.在1.ja…

cordova 实现网页缓存_如何解决ionic,cordova混合开发的app缓存大的问题

如何解决ionic,cordova混合开发的app缓存大的问题关注:143 答案:2 mip版解决时间 2021-02-05 06:24提问者旧梦已过期2021-02-04 16:54如何解决ionic,cordova混合开发的app缓存大的问题最佳答案二级知识专家臸釪樶初2021-02-04 17:10可以试试sd卡挂在&a…

当年课设期末大作业,班主任让我们做一个新闻发布管理系统

导读:基于web的新闻发布及管理系统的设计与实现,是动态网页和数据库结合,通过事件来处理新闻。我们对最新信息的更新和发布需要比较及时,而动态交互网页能实现这些功能,新闻发布及管理系统就是一个能够在网上实现新闻的发布及管理,让人们更好的获取更新的新闻资讯。 随着电…

疫情期间,在家使用java的SSH框架实现一个简单的任务调度系统

导读:随着科学技术的飞速发展和各行各业的分工愈发明细化,对于改革传统的人工任务调度方式的呼声越来越大。得益于快速发展的计算机技术,我们看到了改革的方向。本系统是针对企业或者事业单位甚至一个小团队的任务调度而设计的,目的是改变传统的调度方式,通过计算机来计算…

你在乎的--世界在乎的

惊闻苍老师在某地做活动,距离公司不远,便蠢蠢欲动,招呼几个小伙伴一同前往。老师果然是全民偶像,人生导师,人气火爆,现场是人山人海,根本没有立足之地,后来听说,由于人太…

css3优惠卷上方锯齿_css3怎么实现锯齿边框?

白板的微信你这样的最好还是切图做用css3也达不到一毛一样的效果,如果你很想要尝试一下的话可以试试,不过边缘不是顺滑的感觉

改善Hibernate应用程序性能的7种方法

Hibernate是将Java Web应用程序与SQL数据库集成的好工具,但是当应用程序的响应时间开始显着增加时,我们应该怎么做? 当我们怀疑应用程序是否会随着客户群的增长而扩展时,我们该怎么办? 在花大价钱托管或重写代码之前&…

java网络爬虫技术也可以代替Python实现网络新闻分析系统

导读:自从大数据的概念被提出后,互联网数据成为了越来越多的科研单位进行数据挖掘的对象。网络新闻数据占据了互联网数据的半壁江山,相比传统媒体,其具有传播迅速、曝光时间短、含有网民舆论等相关特征,其蕴含的价值也愈来愈大。 利用相关网络爬虫技术与算法,实现网络媒体…

centos 服务器装与python34源码安装

http://www.111cn.net/sys/CentOS/63645.htm 1、CentOS安装Python的依赖包(不安装依赖包,会导致python安装不完整) yum groupinstall "Development tools"yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-…