添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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("?") != -