URL  中用get 方式传递中文参数,会造成乱码的情况,可以采用前台用JS 编码+后台action 解码的方式解决。但是有时候,后台的action 不可见的时候,就需要在前台 用 JS 完成编码+解码的工作。

js对url进行编码和解码的三种方式和区别

*** 只有 0-9[a-Z] $ - _ . + ! * ' ( ) , 以及某些保留字,才能不经过编码直接用于 URL。

***例如:搜索的中文关键字,复制网址之后再粘贴就会发现该URL已经被转码。

1、escape 和 unescape

原理:对除ASCII字母、数字、标点符号 @  *  _  +  -  .  / 以外的其他字符进行编码。

编码:escape('http://www.baidu.com?name=zhang@xiao@jie&order=1')

结果:"http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1"

escape('张')

结果:"%u5F20"

解码:unescape("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")

结果:"http://www.baidu.com?name=zhang@xiao@jie&order=1"

unescape("%u5F20")

结果:"张"

2、encodeURI 和 decodeURI

原理:返回编码为有效的统一资源标识符 (URI) 的字符串,不会被编码的字符:! @ # $ & * ( ) = : / ; ? + '

encodeURI()是Javascript中真正用来对URL编码的函数。

编码:encodeURI('http://www.baidu.com?name=zhang@xiao@jie&order=1')

结果:"http://www.baidu.com?name=zhang@xiao@jie&order=1"

解码:decodeURI("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")

结果:"http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1"

3、encodeURIComponent 和 decodeURIComponent

原理:对URL的组成部分进行个别编码,而不用于对整个URL进行编码

编码:encodeURIComponent('http://www.baidu.com?name=zhang@xiao@jie&order=1')
结果:"http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1"

解码:decodeURIComponent("http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1")

"http://www.baidu.com?name=zhang@xiao@jie&order=1"

在Web开发 中 ,我们经常需要处理 URL ,并在某些情况下需要将 URL 转换为汉字。在JavaScript 中 ,我们可以使用一些内置函数和技术来实现这个目标。,它可以 解码 经过 编码 的 URL 组件。,它可以 解码 经过 编码 的 URL 。我们可以使用这个函数将 URL 转换为汉字。在上面的代码 中 ,我们首先定义了一个经过 编码 的 URL 字符串。在上面的代码 中 ,我们首先定义了一个经过 编码 的 URL 字符串。函数将 解码 后的组件拼接起来,形成转换后的 URL ,并使用。函数对该 URL 进行 解码 ,并将 解码 后的 URL 存储在。,它包含了多个汉字的 编码 。 虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响 URL 完整性的特殊 字符 进行 过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面 编码 不一至导致的 乱码 问 题。例如:发送页与接受页的 编码 格式(Charset)不一致(假设发送页面是GB2312而接收页面 编码 是 UTF-8),使用escape()转换传输 中文 字串就会出现 乱码 问题。 以下是 JS 下对 URL 进行 编/ 解码 的各种方法: escape 方法:返回一个可在所有计算机上读取的 编码 String 对象。 function escape(charString : String) : 本文介绍了如何使用JavaScript实现 URL 汉字 编码 和 解码 的功能。通过函数可以将 中文 字符转换为 URL 安全格式,而函数可以将 编码 后的字符串 解码 为原始的 中文 字符。在实际的Web开发 中 , URL 编码 和 解码 常常用于处理包含 中文 字符的 URL 参数 。 <script type="text/javascript"> // js 处理 中文 乱码 ,在 url 拼接的 参数 中 是不能有 中文 的,因此需要对 中文 进行 编码 //常用组件有encodeURIComponent和decodeURIComponent方法 //encodeURI与decodeURI方法 var params = 'username="杨永信"&password=123'... 虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响 URL 完整性的特殊字符 进行 过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面 编码 不一至导致的 乱码 问题。 例如:发送页与接受页的 编码 格式(Charset)不一致(假设发送页面是GB2312而接收页面 编码 是UTF-8),使用escape()转换传输 中文 字串就会出现 乱码 问题。 以下... UnicodeChr(){ return '00A4,00A7,00A8,00B0,00B1,00B7,00D7,00E0,00E1,00E8,00E9,00EA,00EC,00ED,00F2,00F3,00F7,00F9,00FA,00FC,0101,0113,011B,012B,014D,016B,01CE,01D0,01D2,... 解决 url 乱码 ,主要有三种方法:unescape,encodeURI以及encodeURIComponent(),对于 url 中 含有 中文 的,发现此前用的不起作用,改成了decode URL 中文 解码 正常,代码如下 var url = window.location.search; //获取 url 中 "?"符后的字串 var theRequest = new Object(); if ( url .indexOf("?") != -