javaScript中URL编码转换,escape() encodeURI() encodeURIComponent
在使用url进行参数传递时,
经常会传递一些中文名的参数或URL地址,
在后台处理时会发生转换错误。在有些传递页面使用GB2312,
而在接收页面使用
UTF8,这样接收到的参数就可能会与原来发生不一致。
使用服务器端的urlEncode函数编码的URL,
与使用客户端javascript的
encodeURI函数编码的URL,结果就不一样。
javaScript中的编码方法:
escape() 方法:
采用ISO
Latin字符集对指定的字符串进行编码。所有的空格符、
标点符号、特殊字符以及其他非ASCII字符都将被转化成%
xx格式的字符编码(xx等于该字符
在字符集表里面的编码的16进制数字)。比如,
空格符对应的编码是%20。unescape方法与此相反。
不会被此方法编码的字符: @ * / +
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版本就有。
分享到:
相关推荐
然而,`escape`并不适用于URL编码,因为它会改变URL中的某些合法字符,如空格会被转换为"+"或"%20",这可能导致解析问题。 2. `encodeURI` 函数: `encodeURI`是专为编码URI(统一资源标识符)设计的。它不会编码...
JavaScript 中对 URL 编码和解码涉及到六个函数:escape、encodeURI、encodeURIComponent、unescape、decodeURI 和 decodeURIComponent。这六个函数的使用场景和特点分别是: escape 函数:escape 函数用于将字符串...
为了解决这一问题,JavaScript提供了几种不同的编码方法来处理URL中的特殊字符。本文将详细介绍`escape()`, `encodeURI()`, `encodeURIComponent()`这三个函数的功能、使用场景以及它们之间的区别。 #### 一、`...
`encodeURI()`函数设计用于转换URL中的特殊字符,它会保留大部分字符不变,只对那些可能在传输中引起问题的字符进行编码,如空格、引号、尖括号等。然而,对于非英文字符的处理,尤其是中文字符,`encodeURI()`的...
在博文《js的encodeUri编码转换为GBK问题》中,作者可能讨论了如何实现这个转换过程。`GBKUrl.js`这个文件很可能是用来处理GBK编码到URI编码转换的工具脚本。这个脚本可能包含以下功能: 1. 使用`TextDecoder`来...
在JavaScript中,`escape()`, `encodeURI()`, 和 `encodeURIComponent()` 是三个常见的字符串编码函数,它们各自有独特的用途和特点。理解它们的区别对于编写健壮的JavaScript代码至关重要。 首先,`escape()` 函数...
`escape()` 是一个用于编码 URL 字符串的方法,它会将非 ASCII 字符转换为 `%nn` 的形式(`nn` 是该字符对应的十六进制值)。需要注意的是,`escape()` 并不会对 `-_.!~*'()` 这些字符进行编码,因为这些字符被视为...
- **二次转码**:先使用`encodeURI()` 编码一次,再用`encodeURIComponent()` 编码一次,这样URL中的特殊字符都会被编码。在服务器端,使用`URLDecoder.decode(name, "UTF-8")` 进行解码。 2. **Java服务器端处理*...
2. encodeURI()是javascript中真正用来对URL编码的函数。编码整个URL地址,但对特殊含义的符号”;/?:@&=+$,#”,也不进行编码。对应的解码函数是decodeURI()。 3. encodeURIComponent()能编码”;/?:@&=+$,#”这些...
这意味着它可能不适用于大部分URL编码场景,因为这些字符在URL中有特殊含义。 2. `encodeURI()` 方法: 相较于`escape()`,`encodeURI()`更适用于编码URI(统一资源标识符)字符串。它按照UTF-8编码格式将URI转换...
escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格...
总的来说,处理URL中传递的中文参数时,合理使用`encodeURI`和对应的解码方法,结合理解浏览器和服务器的编码行为,是避免乱码的关键。本文提供的“前端两次encode——后端一次decode”方案,是一种兼容性好且相对...
URL中包含编码的中文的时候,程序获取queryString需要根据url的不同编码,采用不同的解码方式,RequestQueryString方法能够自动识别url是用UTF-8编码还是GB2312编码,从而自动获取争取的值。 应用范例:...
- `encodeURI`不对URL中的保留字符进行编码。 - `encodeURIComponent`对所有的非保留字符进行编码,并且也对保留字符进行编码。 - 使用场景:`encodeURI`适用于整个URL的编码,而`encodeURIComponent`适用于URL的...
易语言JS实现编码转换源码,JS实现编码转换,decodeURI,encodeURI
【JavaScript源代码】基于网址URL中特殊字符转义编码是一个重要的概念,特别是在Web开发中,因为URL是连接互联网资源的基本途径。URL编码是确保数据在URL中正确传递的关键步骤,尤其是当URL包含特殊字符或者非ASCII...