URL编码:在地栏直接输入参数带汉字的URL后,服务器端接收后出现乱码的解决方法

        在asp.net开发中,其web.config中的编码配置默认的是 UTF-8,这个时候你如果在IE地址栏中直接输入参数中带有汉字的Url(例:http://localhost/test/test.aspx?id=我靠,这样真的可以啊。), 这时在后台代码中用Request["id"]接收到的就是乱码,甚至有时候接收不到值。

       当然大家有一种解决方法是 在web.config中把 编码改为gb2312就行了。但是如果对于整个项目来说不能改为gb2312或者客户要求使用utf-8编码,这时候该怎么办呢?

       下面是我自己试着写的两种方法(也是在我回别人贴子时写的,怕以后忘了,所以就搞到博客里来了^_^),只是为了测试功能,里面还不完善,如果谁有兴趣的话,可以完善一下:

方法1:

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
     if(!this.Page.IsPostBack)
     {
           Request.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
           this.Page.RegisterStartupScript("submit","<script language=javascript>document.Form1.action='test.aspx?id='+escape(document.Form1.action);document.Form1.submit();</script>");
     }
    else
     {
       Response.Write(Request["id"]);
     }
}

方法2:

private void Page_Load(object sender, System.EventArgs e)
  {
        // 在此处放置用户代码以初始化页面
       if(Session["ybm"]==null)
       {
             //Request.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
             StringBuilder sb = new StringBuilder();
             sb.Append("<script language=javascript>" + Environment.NewLine);
             sb.Append("    JumpUrl();" + Environment.NewLine);
             sb.Append("    function JumpUrl()" + Environment.NewLine);
             sb.Append("    {" + Environment.NewLine);
             sb.Append("        var curUrl = location.href;" + Environment.NewLine);    
             sb.Append("        curUrlArr = curUrl.split(/"=/");" + Environment.NewLine);
             sb.Append("        curUrl = curUrlArr[0] + /"=/" + escape(curUrlArr[1]);" + Environment.NewLine);
             sb.Append("        location.href = curUrl;" + Environment.NewLine);
             sb.Append("     }" + Environment.NewLine);
             sb.Append("</script>" + Environment.NewLine);

              this.Page.RegisterStartupScript("submit",sb.ToString());
             Session["ybm"]="yes";
         }
        else
        {
              Session["ybm"]=null;
              Response.Write(Request["id"]);
        }
   
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值