URL编码方法比较 Encode,Javascript,escape,encodeURI,encodeURIComponent,UTF8

摘要:
javascript中有几种编码URL字符串的方法:escape()方法:使用ISOLatin字符集编码指定的字符串。所有空格字符、标点符号、特殊字符和其他非ASCII字符将转换为%xx格式的字符代码(xx等于字符集表中编码的十六进制数字)。空格字符的编码为%20。是否使用UTF-8编码格式将URI字符串转换为转义格式?
javascript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。
escape() 方法:

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。

不会被此方法编码的字符: @ * / +

encodeURI() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。

不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。

不会被此方法编码的字符:! * ( ) '

因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。

另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。

免责声明:文章转载自《URL编码方法比较 Encode,Javascript,escape,encodeURI,encodeURIComponent,UTF8》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux安装OpenCV以及windows安装numpy、cv2等python2.7模块SqlServer触发器常用语法AFTER、INSTEAD OF及其详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#操作MySQL时,出现的中文乱码的解决方案

最终解决方案:1、选用gb2312编码2、设置my.ini文件中的默认编码   分别在[mysql]和[mysqld]配置段中增加或修改default_charater_set=gb2312 3、创建数据库时编码选用gb2312 4、创建表时编码选用gb2312,Collation选用gb2312_chines_ci(gb2312_bin没有去试验)...

C#汉字转为Unicode编码

主要用于生成json格式时,将汉字转成Unicoude编码,防止页面乱码。   protected string GetUnicode(string text) { string result = ""; for (int i = 0; i < text.Length; i++) {...

图片上传——用一般处理程序实现

.Net 中如何实现图片上传 1、表单元素使用文件选择框<input  type ="file " />控件2、表单设置enctype="multipart /form-data ",本质上是设置浏览器提交表单的数据时,使用随机分隔符来分 割不同控件的数据,而且数据的组织形势由name=value 换成了数据头和数据体的方式 二、服务器端1、服...

Java基础知识强化之IO流笔记34:OutputStreamWriter(Writer字符流的子类)5种write数据方式

1. OutputStreamWriter (转换流) OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。 同时OutputStreamWriter 也是 字符流Writer(抽象类)一个具体实现子类。 所以我们这个OutputStreamWriter (转换流)也是字符流。 2. ...

Tomcat中的c3p0数据库连接池的释放

一个项目通过c3p0获得连接池,相关代码如下: public class JdbcUtil { // 连接池的核心类 private static ComboPooledDataSource dataSource; //初始化连接池相关参数 static{ try { dataSource = new ComboPooledDat...

如何退出正在Sleep的线程

    今天有个同事问我Thread的Interrupe方法,这个方法用于终止另一个正在等待(Sleep/Wait/Join)状态的线程,如果那个线程未处于等待状态,则等到下次进入等待状态时再抛出。     这个方法的平时用的机会其实并不大,由于需要线程处于等待状态,很大程度上限制了使用的机会,因此问了下同事实际的使用场景,原来是某些线程进入了长时间的Sl...