JavaScript中encodeURI,encodeURIComponent与escape的注意

  大家在使用JS提交数据时,尤其是中文的时候,经常会需要将要提交的字符串进行URL编码。在JS中对字符串进行URL编码有好几种方法,encodeURI,encodeURIComponent,还有escape。在我看到的很多代码中escape这个函数用的最多,不过这个函数却是不推荐使用的。下面我们来分别看看这几个函数:

  

  encodeURI:对指定的字符串进行URL编码,不包括 : # / \ = & 这些URL中的关键字符。

  

  encodeURIComponent:对字符串中的字符进行编码,包括URL中的特殊字符。

  

  escape:这个是JS比较早期版本的函数,这个函数中处理unicode字符的时候会有些问题。

 

  代码如下:

  

 1     var url = "http://www.abc.com?q=aa&b=呵呵";
 2 
 3     var encodedUrl = encodeURI(url);
 4 
 5     alert(encodedUrl); //输出:http://www.abc.com?q=aa&b=%E5%91%B5%E5%91%B5
 6     
 7     encodedUrl = encodeURIComponent(url);    
 8     alert(encodedUrl);   //输出:http%3A%2F%2Fwww.abc.com%3Fq%3Daa%26b%3D%E5%91%B5%E5%91%B5
 9 
10     alert(escape(url));  //输出:http%3A//www.abc.com%3Fq%3Daa%26b%3D%u5475%u5475 

 

 

  如上所示,escape函数中处理中文字符的时候,都会转换成%uxxxx这种形式,显然这个和URL编码的格式不一样,而encodeURIComponent函数编码是最彻底的,如果没有特殊需要的话,encodeURIComponent这个函数是比较常用的,当然,也许我们使用escape也不会有什么问题,也许你的服务端语言也能够正常的解析出来,不过这个函数在处理unicode字符的时候还不是很标准,所以这里建议大家使用encodeURIComponent和decodeURIComponent这对函数来对字符串进行URL编码和解码。

 

转载于:https://www.cnblogs.com/springfield/archive/2010/05/19/1739624.html

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

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

相关文章

C#新版本风格项目文件(SDK风格项目 SDK-style project)

在VisualStudio中创建NetCore以上版本的项目,使用的都是新版本风格的项目文件。和旧版本.NetFramework版本的项目文件区别:双击项目可直接打开csproj文件进行编辑配置项目文件内容的改变项目属性文件夹图标更改项目引用去除,改成依赖项Nuget包…

史上最丧心病狂的商品定价套路:如何从数学角度,榨干你身上的每一分钱

全世界只有3.14 % 的人关注了爆炸吧知识世上没有精明的买家,只有精明的卖家。的确,卖家的嘴,骗人的鬼。在买与卖的博弈中,没有一个买家可以取胜。别不信,今天就让你见识下“卖家套路终极奥义”。按量定价,是…

python 接口自动化_Python 接口自动化测试

1. 接口基础知识1.1 接口分类接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。(1) webservice接口:走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都要通过工具才能进行调…

工厂模式 Factory

工厂模式 记得一个好友面试的时候,面试官问他,你怎么获得一个类的对象的好友说,new一个啊,的确没错,对象不是new难道还是create... 当然在使用new对象的时候,这段代码也就意味着难以以后的维护和扩展了&…

java定时器写法_java定时器的写法是什么样?

定时器的用法是java核心基础之一,很多特殊功能都需要用到定时器,下面一起来看看定时器是如何编写的吧。示例:一个具备周期性定时(毫秒级);单时刻定时(秒级);多时刻定时(秒级)。后两个时间的设置必须符合“yyyy-MM-ddHH:mm:ss”、“yyyy-MM-dd…

CentOS中vsftp安装、配置、卸载

CentOS中vsftp安装、配置、卸载转载http://www.zjgsq.com/1509.html转载于:https://blog.51cto.com/bbtao/1606816

struts2文件上传

/*** 单文件的上传* author Administrator**/public class FileUploadAction extends ActionSupport {private static final com.opensymphony.xwork2.util.logging.Logger logger LoggerFactory.getLogger(FileUploadAction.class);//上传文件private File upload;//保存路径…

python的所有库_Python 常用库

前言之前重写了视频字符画处理的代码,然后这两天又在研究命令行和网络。读了一点开源工具的代码,越来越觉得有必要针对性地学习一下一些重要的基础库。这里呢就列个小清单,把我认为有必要学习的库写一下。带 [ x ] 的表示已完成时间time&…

401 Palindrome

这道题最初我是没理解清楚题意,我以为那些reverse栏空白的字母是省略了.后来在这个论坛找到了更多的测试数据,发现了自己理解错了,重新读题 ,修改了下代码- -.弄了很久才AC 我的思路和别人有点不同的是,我是通过计算来得到在常量表中的位置 好吧 这道题本来该总结很多的,今天…

东北大姐剪纸被误认为油画,遭人质疑二十多年,只因太过逼真,看完后:真香!不愧是天下第一剪!...

全世界只有3.14 % 的人关注了爆炸吧知识“这是剪纸?太惟妙惟肖了,我还以为是水彩画呢!”这是一位网友的留言。茂盛的树木、潺潺的流水……这些栩栩如生的场景,真难想象竟是出自,一双巧手和一把剪刀。这些作品,全部来自…

2021 年 9 月 TIOBE 指数 C# 同比增长突破 1.2%

TIOBE 编程社区指数是编程语言流行程度的指标。该指数每月更新一次。评级基于全球熟练工程师、课程和第三方供应商的数量。谷歌、必应、雅虎、维基百科、亚马逊、YouTube 和百度等流行搜索引擎用于计算评分。C# 近期发展状态不错,依旧在榜单中排第五,但排…

java基础面向对象_java基础面向对象

一、面向对象之封装1. 面向对象的三个特征是:封装、继承和多态。2. Java开发过程:要实现某个功能,首先要找能够实现这个功能的对象,如果没有找到,就自己造一个对象,将要实现的功能定义到对象中,…

linux 学习笔记 显示压缩文件 gong.zip 的文件内容

#zip -v gong zip zip info: xxx >删除压缩文件中俄smart.txt 文件 #zip -d gong.zip smart.txt deleting:smart.txt >向压缩文件中gong.zip中添加rpm_info.txt文件 #zip -m gong.zip ./rpm_info.txt adding:rpm_info.txt deflated 79% Unzip命令解压缩文件 >将gong.z…

2010年5月系统集成项目管理工程师上午试卷参考答案(讨论版)

鉴于个人精力有限,其他答案将由51CTO相关工作人员不断更新,详见http://training.51cto.com/art/201005/200323.htm以题会友,欢迎跟贴拍砖、讨论。

python qt信号在qml 的使用_QML与Python通信

对于Python3和QML通信,实际上就是 PyQt5QMLPython3混合编程,这是必须的,因为QML做图形界面比较容易,但是做功能实现就用Python比较好,虽然QML也能嵌入 JavaScript代码进行实现,但是这样话还不如用Python来实…

那些35岁的程序员都去哪了

阅读本文大概需要11分钟。大家好,我是findyi,前段时间写过一篇关于大龄程序员的文章:那些40岁的程序员都去哪了,引发了大家的思考和讨论,不少读者私聊问:除了这些出路,还有没有其他可能&#xf…

Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...

在Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据一)中,解释了如何把Crystal Report整合到Sharepoint2010并把报表数据显示出来,但这样并不完整,因为我们在开发时是以系统帐户进…

那些拧不开瓶盖的女生全都是装的?理工男这样想......

全世界只有3.14 % 的人关注了爆炸吧知识昨天,超模君我正在思考人生,八岁的表妹突然提着一瓶矿泉水站在了我的面前。她可怜兮兮的说:“我想喝水,但是拧不开”。我:“........."超模君我明明亲眼见过她一口气拧开过…

java 代码同步_Java同步代码块 转

Java 同步块(synchronized block)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容:Java同步关键字(synchronzied)实例方法同步静态方法同步实例方法中同步块静态方法中同步块Java同步示例Java同步关键字(synchronized)Java中的同步块用s…

Office 2010 64位版本

最新的Office 2010有了x86和x64两种不同的版本,众所周知的使用x64版本具有可以支持更大的内存等特点,但是也会出现一定的兼容性问题。其中感觉影响比较大的是Access的32位版本和64位版本创建的数据库无法通用,这样以前创建的Access文件就无法…