`
keron
  • 浏览: 30915 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JavaScript转义字符(js中escape,encodeURI,encodeURIComponent三个函数的区别)【转】

 
阅读更多

js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

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>');</script>

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

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

3、 js使用数据时可以使用escape

[Huoho.Com编辑]

例如:搜藏中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.net.URLDecoder.decode(str);

 

附注:jsp传递中文参数乱码问题的解决。(web服务器:tomcat6,页面字符集编码:utf-8)

1.在tomcat6中设置字符集编码:

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>

2.定义转换字符集编码filter

定义filter

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharsetCodingFilter implements javax.servlet.Filter{
private String charset;
public void destroy() {
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
req.setCharacterEncoding(charset);
res.setContentType("text/html;charset="+charset);
chain.doFilter(req, res);
}

public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
this.charset=config.getInitParameter("charset");
}

}

web.xml

<!-- 编码转换 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.sagacity.framework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3.在中文参数中,使用encodeURIComponent。

"abc.jsp?param="+encodeURIComponent("中文参数");

分享到:
评论

相关推荐

    JS中三种编码方式(escape,encodeURI,encodeURIComponent)

    它们各自有不同的应用场景和特点,下面将详细介绍这三个函数的工作原理、区别以及使用场景。 1. `escape()` `escape()` 函数主要用于对字符串中的非字母数字字符进行编码。它会将这些字符转换为百分号 `%` 跟上两个...

    ZzJavaScript encode and escape functions

    JavaScript中的编码和转义函数主要有encodeURI、encodeURIComponent和escape这三个函数,它们用于处理URL和URI中的特殊字符。下面将详细介绍这三个函数的功能和使用场景。 首先,encodeURI函数的主要用途是编码整个...

    js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解

    JavaScript中的字符串编码函数主要包括`escape()`、`encodeURI()`和`encodeURIComponent()`,它们的作用是对字符串进行编码处理,以便在网络中安全地传输数据。这三种函数都有对应的解码函数:`unescape()`、`...

    彻底根治Spring @ResponseBody JavaScript HTML特殊字符

    - 如果你希望在前端处理转义,可以在JavaScript中使用`encodeURI()`或`encodeURIComponent()`函数,但这不推荐,因为前端处理可能被绕过。 5. **最佳实践**: - 总是在后端进行HTML转义,以确保数据安全。 - ...

    深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape, decodeURI, decodeURIComponent 。 下面简单介绍一下它们的区别: 1 escape()函数 定义和...

    前台Javascript转换特殊字符

    1. **转义字符**:在JavaScript字符串中,反斜杠`\`用于转义特殊字符,如`\n`表示换行,`\t`表示制表符。 2. **HTML实体**:为了在HTML中安全地显示特殊字符,通常会将它们转换为对应的HTML实体,如`&`转换为`&amp;...

    【JavaScript源代码】基于网址URL中特殊字符转义编码.docx

    【JavaScript源代码】基于网址URL中特殊字符转义编码是一个重要的概念,特别是在Web开发中,因为URL是连接互联网资源的基本途径。URL编码是确保数据在URL中正确传递的关键步骤,尤其是当URL包含特殊字符或者非ASCII...

    js中文乱码问题分析及解决方案.docx

    在JavaScript中,我们可以使用三个编码函数来处理URL编码问题:escape/unescape、encodeURI/decodeURI和encodeURIComponent/decodeURIComponent。 1. escape/unescape函数 escape函数可以对传入的字符串进行转义...

    JavaScript进阶:JS的全局变量和全局函数.docx

    JavaScript的全局变量有三个特殊的预定义变量:`Infinity`表示无穷大,`NaN`(Not-a-Number)表示非数字值,`undefined`表示未定义的值。这些变量在全局作用域中都有特定的含义。 全局函数则是可以被整个程序范围内...

    下载编码的问题字符串转URI

    在 JavaScript 中,有三个可以对字符串编码的函数,分别是 escape()、encodeURI()、encodeURIComponent(),每个函数都有其特定的用途和应用场景。 1. escape() 函数 escape() 函数可以对字符串进行编码,这样就...

    js 转义字符及URI编码详解

    在编程语言中,转义字符是一种特殊的字符序列,它以反斜杠(\)开头,随后跟着一个或多个字符。转义字符用于在字符串中插入那些通常会被解释为控制字符或者特殊符号的字符。比如,反斜杠自身就是一个需要转义的字符...

    js中unicode转码方法详解.docx

    在示例中,`ToUnicode`函数通过`escape()`函数将字符串转换为包含 `%u` 前缀的ASCII序列,然后替换为`\u`,从而得到JavaScript的Unicode转义序列。`ToGB2312`函数则通过`unescape()`和字符串替换来实现反向转换。 6...

    SQL中使用ESCAPE定义转义符详解

    JavaScript提供了`escape()`、`encodeURI()`和`encodeURIComponent()`函数来对字符串进行编码,防止在URL或JavaScript代码中引起解析问题。PHP有`mysql_real_escape_string()`、`addslashes()`等函数,以及预编译...

    解析XML特殊字符方法

    例如,在Python中,可以使用`xml.sax.saxutils.escape()`函数来编码特殊字符,而在JavaScript中,可以使用`encodeURI()`或`encodeURIComponent()`函数。同样,接收XML数据后,可以通过解码函数还原这些字符。 **3. ...

    javascript API docx简洁文档

    * `escape(String)`: 将字符串变为新的字符串,有些字符根据 RFC1738 转换成转义序列 * `unescape(String)`: 将 escape() 编码的字符串转换成它的 ASCII 码 * `encodeURI(uri)`: 用 UTF-8 编码将 uri 变成编码 URI *...

    JavaScript字符集编码与解码详谈

    - escape() 和 unescape():在ES3规范中定义,不编码ASCII字符集中的69个字符。 - encodeURI() 和 decodeURI():用于对整个URI进行编码,不编码的字符更多,包含82个字符。 - encodeURIComponent() 和 ...

Global site tag (gtag.js) - Google Analytics