.net 传递中文参数解决办法
前几天做公司网站时,上线时遇到一个头疼的问题,用户名只要是中文,参数经过页面传递后就是乱码了,
代码如下:
<script language="javascript">
function userLogin()
{
var name;
var pwd;
name = document.all("txtName").value;
pwd = document.all("txtPWD").value;
if(name=="" || pwd =="")
{
alert("登录名或密码不能为空!");
return
}
document.location = "http://www.xx**.com/index.aspx?id=" + name+ "&ps=" + pwd;
}
</script>
后来,查找n个资料,给出不少解决办法,记得一种办法是先编码再解码,我是懒人,无意中发现了一个简单的方法,很简单的就解决这个问题,经过一个月使用,没有客户反映任何问题:
方法如下:
<script language="javascript">
function userLogin()
{
var name;
var pwd;
name = document.all("txtName").value;
pwd = document.all("txtPWD").value;
if(name=="" || pwd =="")
{
alert("登录名或密码不能为空!");
return
}
document.location = "http://www.xx**.com/index.aspx?id=" + encodeURIComponent(name) + "&ps=" + pwd;
}
</script>
对比一下,这段代码,多了点什么!!!!!!!!!!
看出来了没 encodeURIComponent(name)
encodeURIComponent是什么意思呢???
转载一下:
本质原因是 escape() 只是为 ASCII字符做转换工作,转换成的 %unnnn 这样的码,如果要用更多的字符如 UTF-8字符库 就一定要用 encodeURIComponent() 或 encodeURI() 转换才可以成 %nn%nn 这的码才可以,就这么简单,多与少的问题,HOHO~所以所以,为了全球的统一化进程,在用 encodeURIComponent() 或 encodeURI() 代替 escape() 使用吧!
这是一种搞定.net 传递中文参数的简单办法!