ASP接收Ajax 在POST方式下发送的escape编码中的个别乱码
2015-10-28 16:48
741 查看
看代码:
var xmlhttp=getHTTPObject();
var post="test·test+test·";
xmlhttp.open('POST', 'test.asp?random='+Math.random(), true);
xmlhttp.setrequestheader("content-length",post.length);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
alert(xmlhttp.responseText);
return true;
}
}
xmlhttp.send("act="escape(post));
在这里,我以POST方式发送了字符串escape("test·test+test·"),并且使用了setRequestHeader
ASP端接收的时候,我用
<%Response.CodePage=936%>
<%Response.Charset="gb2312"
Response.Write Unescape(Request("act"))
%>
最后调试一下你看到的结果就是“·”和“+”都显示不出来。
开始我以为是asp和javascript的escape unescape不配套的结果,后来我使用vbsunescape(如下)代替unescape问题依然如故。
<script language="javascript" runat="server">
function vbsunescape(source){
return unescape(source);
}
</script>
我把+做了转义,但是·不知道怎么弄,他把·转成了什么我本来想写进一个2进制文件看看(必须是二进制文件),但是在asp下用stream操作2进制文件我老出错,哎没时间弄这个了,还有好多事呢,先凑合转义一下了,这个问题留给看到这个blog的高手们,解决了和我说一声,谢了!
function escape2(str){
return escape(str).replace(/\+/g,"%2b");
}
--------------------------------------------
看到大家的回复,谢谢大家。汲取大家的思想精华,我终于研究出来了。。。。
最终的完美的解决方法是这样的
发送端用encodeURIComponent(escape(xxxxxxx))就可以了(其他发送接受代码同上)
我昨天仅作了encodeURI的尝试,没有想到encodeURIComponent和escape套接的方法,刚才突然来了灵感试了一下,太牛逼了,OHYEAH!吃饭去!!
var xmlhttp=getHTTPObject();
var post="test·test+test·";
xmlhttp.open('POST', 'test.asp?random='+Math.random(), true);
xmlhttp.setrequestheader("content-length",post.length);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4 && xmlhttp.status == 200 ){
alert(xmlhttp.responseText);
return true;
}
}
xmlhttp.send("act="escape(post));
在这里,我以POST方式发送了字符串escape("test·test+test·"),并且使用了setRequestHeader
ASP端接收的时候,我用
<%Response.CodePage=936%>
<%Response.Charset="gb2312"
Response.Write Unescape(Request("act"))
%>
最后调试一下你看到的结果就是“·”和“+”都显示不出来。
开始我以为是asp和javascript的escape unescape不配套的结果,后来我使用vbsunescape(如下)代替unescape问题依然如故。
<script language="javascript" runat="server">
function vbsunescape(source){
return unescape(source);
}
</script>
我把+做了转义,但是·不知道怎么弄,他把·转成了什么我本来想写进一个2进制文件看看(必须是二进制文件),但是在asp下用stream操作2进制文件我老出错,哎没时间弄这个了,还有好多事呢,先凑合转义一下了,这个问题留给看到这个blog的高手们,解决了和我说一声,谢了!
function escape2(str){
return escape(str).replace(/\+/g,"%2b");
}
--------------------------------------------
看到大家的回复,谢谢大家。汲取大家的思想精华,我终于研究出来了。。。。
最终的完美的解决方法是这样的
发送端用encodeURIComponent(escape(xxxxxxx))就可以了(其他发送接受代码同上)
我昨天仅作了encodeURI的尝试,没有想到encodeURIComponent和escape套接的方法,刚才突然来了灵感试了一下,太牛逼了,OHYEAH!吃饭去!!
相关文章推荐
- 熟练掌握ASP分页技术
- ASP的时间处理函数
- ASP中处理UTF-8格式的文件
- asp字符串函数及实例
- asp常用正则表达式大全
- ASP错误提示大全
- asp网页提升网页速度方法5则
- ASP使用正则表达式获得代码中第一张图片地址
- ASP脚本语言的19个基本技巧应用
- asp.net遍历页面中所有TextBox,并赋值为String.Empty的方法
- ASP.NET将Session保存到数据库中
- ASP.NET运行机制原理
- asp.net中对amCharts(.net版)图形报表的使用
- ASP实现加法验证码
- jasper报表添加显示字段
- asp.net无法获取kindeditor文本编辑器内容的解决办法
- ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction差别
- ASP的Global.asa文件技巧用法
- ASP.NET MVC中图表控件的使用方法
- Asp Url汉字乱码的问题