黑马程序员技术交流社区

标题: ajax向一般处理程序 传中文字符 [打印本页]

作者: aynulily    时间: 2014-3-29 09:33
标题: ajax向一般处理程序 传中文字符
问题是这样的: 注册页面, 每填一个信息 离开后要 验证是否与数据库中记录重复,ajax 会通过getElementById()来获得 用户在控件中所填的数据,并用其xmlhttprequest 对象的 send方法 传给 一般处理程序,一般处理程序 接受 用户所填的数据(问题就在这),本来xmlhttprequest.open()中的url 参数值是中英文,而 一般处理程序接受后,英文部分不变,中文部分成为方括号了。如图:

af2.JPG (137.18 KB, 下载次数: 11)

af2.JPG

af.JPG (179.25 KB, 下载次数: 15)

af.JPG

作者: 墨蹄    时间: 2014-3-29 11:45
写一个编码解码的函数在前台可以调用,解决中文参数乱码问题,你试试
1.编码
string state=Server.UrlEncode(stateName.Text.Trim());
Response.Redirect("aaa.aspx?state="+state+"");
2.解码(aaa.aspx)
string state= Server.UrlDecode(Request.QueryString["state"].ToString());
作者: 墨蹄    时间: 2014-3-29 12:01
<script type="text/javascript">
        function GoUrl()
        {
            var Name = "中文参数";
            location.href = "aaa.aspx?Name="+escape(Name) ;
        }
     </script>
这是前台调用时使用的函数
作者: 墨蹄    时间: 2014-3-29 12:07
接收时解码
string Name = Request.QueryString["Name"];
Response.Write(Server.UrlDecode(Name)) ;
地址栏效果:http://localhost:3284/aaa.aspx?Name=%u4E2D%u6587%u53C2%u6570
显示效果:中文参数
作者: aynulily    时间: 2014-3-31 11:33
墨蹄 发表于 2014-3-29 11:45
写一个编码解码的函数在前台可以调用,解决中文参数乱码问题,你试试
1.编码
string state=Server.UrlEncod ...

为什么要编码,然后再解码,不是很啰嗦吗,不考虑安全性的话。 就我所查的是,传参页面和接参页面的编码不同所以要转成 两个页面都能识别的编码,那么为什么同一个网站开发的页面编码就不同了呢,不同又都是什么编码啊,如何改变他们所以的编码。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2