日期:2014-05-18  浏览次数:20441 次

问一个关于AJAX的问题,,希望高手帮忙
就是我的传值,每次传的要是英文或者数字,就解析正确,但是一传中文,就会乱码,编码方式我也改过。
JScript code

ACT_AJAX_BIAOZHU + "&type=0&p1=" + biaozhula + "&p2=" + bianzhulo + "&p3=" + document.getElementById("biaozhuxinxi").value + "&p4=" + id + "&p5=" + escape(xinxi.toString())



上面这是javascript的代码
然后再回调的时间里面
C# code

String p1 = context.Request.Params["p1"];
String p2 = context.Request.Params["p2"];
String p3 = context.Request.Params["p3"];
String p4 = context.Request.Params["p4"];

p3 = HttpUtility.UrlDecode(context.Request.Params["p3"], Encoding.UTF8);

String p5 = HttpUtility.UrlDecode(context.Request.Params["p5"], Encoding.UTF8);



就是p5传过来的中文都能正常转换,但是p3传过来的就不能正常转换。。为什么啊?
请求帮助一下。。谢谢各位。。

------解决方案--------------------
JScript code
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");

------解决方案--------------------
js 传值的时候中文需要转码。
否则 后台 取不到或是取乱了。

js 网址传参 中文转码 :

url ="&&&&?name="+encodeURI("你好");

后台直接取值即可。不需转换。

------解决方案--------------------
Var params="";
for(var i=0;i<thisform.elements.length;i++){
var elem=thisform.elements;
params+=(elem.name+"="+encodeURIComponent(elem.value.trim()));
if(i!=(thisform.elements.length-1))params+="&";
}
通过encodeURIComponent(参数)传递的值,js下用decodeURIComponent解码取值。但decodeURIComponent处理不了页面是gbk编码的urlencode()这样的数据(这个非常麻烦,好像需要对每个gbk字符专门处理才行,如果页面全部是utf-8的就没有问题了)。

后台如果是gbk编码的话,那不能直接用 urldecode()解用encodeURIComponent传递来的值,而需要转换成utf-8

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/antiking/archive/2007/04/24/1579389.aspx