URL 中用get 方式传递中文参数,会造成乱码的情况,可以采用前台用JS 编码+后台action 解码的方式解决。但是有时候,后台的action 不可见的时候,就需要在前台 用 JS 完成编码+解码的工作。
*** 只有 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("?") != -