快速业务通道

关于URL的传递字符串问题

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

前几天在调程序的时候遇到了比较郁闷的问题,我用URL从一个页面传递字符串到另一个页面的时,出 现了个奇怪的问题,我要传递的字符串是“DK51+700中继站”;可是另一个页面接收到字符串却是: “DK51 700中继口”;加号变成了空格,“站”不能解析出来,变成了不能识别的符号“口”。

我上网查找了原因:URL中有些字符被转义,比如空格被编码成加号,于是传的参数明明是加号,获取 的值却成了空格。

按照网上的建议,我们应该对要传递的参数进行编码处理。于是,我对传递的参数进行了处理,但是 又衍生了一堆问题出来;我当时为了节约时间,就没有仔细研究,用了字符串中的Replace()方法在传送 前代替了这两个字符,接收到了再代替回来。现在我来具体的展示下这个问题。

1.首先,我们先看下我的开始的问题(环境:VS2008):

1.1.新建一个网站,在其中添加一个页面,一个页面是Defaul.aspx,另一个页面Defaul2.aspx,在第 一个页面中添加一个控件:HyperLink1;

后台代码:

public partial class _Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    string url;
    string name;
    url = "Default2.aspx?Name=";
    name = "DK51+700中继站";
     HyperLink1.NavigateUrl = url + name;
  }
}

1.2.在第二个页面中添加一个Label控件Label1;

后台代码:

public partial class Default2 : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    string name = Request.QueryString ["Name"];
    Label1.Text = name;
  }
}

1.3.结果显示:“DK51 700中继口”。

public partial class _Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    string url;
    string name;
    url = "Default2.aspx?Name=";
    name = "DK51+700中继站";
     name = name.Replace("+", "@");
    name = name.Replace("站", "%");
     HyperLink1.NavigateUrl = url + name;
  }
}

2.我当时的解决方法:用了字符串中的Replace()方法在传送前代替了这两个字符,接收到了再代替回 来。

2.1第一个页面的后台代码:

public partial class _Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    string url;
    string name;
    url = "Default2.aspx?Name=";
    name = "DK51+700中继站";
     name = name.Replace("+", "@");
    name = name.Replace("站", "%");
     HyperLink1.NavigateUrl = url + name;
  }
}

2.2.第二个页面中,后台代码:

public partial class Default2 : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
{
  string name = Request.QueryString ["Name"];
    name = name.Replace("@", "+");
    name = name.Replace("%", "站");
    Label1.Text = name;
  }
}

2.3.结果是:“DK51+700中继站”。正确!

后来我在网上找到这个这样的设置,在Web.config中设置:

<system.web>
<globalization requestEncoding="gb2312" responseEncoding="gb2312" cult

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号