ASP.NET中Request.QueryString中文乱码的解决方法

最近需要修改项目中的登录功能,之前别人写好的方法是利用URL进行参数传递,然后用Request.QueryString方法获取参数。其实我并不喜欢利用URL进行传参,个人还是比较倾向于使用ajax + post的方式进行参数传递。之后写着写着就发现问题了,如果传递的参数值是中文,Request.QueryString方法获取到的参数竟然会乱码!而且同一段代码,不同浏览器之间的效果还不一样!最终在求助度娘后终于解决了问题,下面就分享一下解决方法。首先看一段代码:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8" />
    <title>登录</title>
    <script src="Scripts/jquery-1.11.3.min.js"></script>
</head>
<body>
    <script>
        $(document).ready(function () {
            $.ajax({
                url: 'TestHandler.ashx?username=张三',
                type: 'get',
                dataType: 'json',
                success: function (data) {
                    alert(data);
                }
            })
        })
    </script>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;

namespace WebApplication1
{
    /// <summary>
    /// TestHandler 的摘要说明
    /// </summary>
    public class TestHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string userName = context.Request.QueryString["username"].ToString();
            context.Response.Write(JsonConvert.SerializeObject(userName));
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

代码十分简单,前端传递一个username参数,参数值为“张三”,后台接收参数后不做任何处理返回给前端。下面我们用Chrome、Firefox、Edge和IE四种浏览器分别测试一下。
Chrome效果:
在这里插入图片描述
Firefox效果:
在这里插入图片描述
Edge效果:
在这里插入图片描述
IE效果:
在这里插入图片描述
可以发现,Chrome、Firefox、Edge都能正确运行,IE则出现乱码。要解决IE浏览器下的乱码问题,只需要在Web.config的<system.web></system.web>节点下加一句话就行了:

<system.web>
    <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />
</system.web>

现在再来测试一下I,可以发现IE正确读取参数值:
在这里插入图片描述
需要注意的是,如果使用该方法,IE确实可以正确读取参数,但Chrome、Firefox、Edge则会出现乱码,不过由于我们的项目必须使用IE,所以也就无所谓了~

发布了99 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/HerryDong/article/details/103060025