快速业务通道

关于URL的传递字符串问题

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
ure="zh-CN" fileEncoding="gb2312" />
</system.web>

但是这样的传递中文可能还会遇到其他中文字出问题,最好是采用下面的方法将中文参数编码。

3. 我采用URLEncode()编码,采用URLEncode()不在Web.config中设置好像也可以,在我的测试中没有 问题,但是为了安全,我们还是添加上上面的设置。

3.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("+", "@");
    HyperLink1.NavigateUrl = url + Server.UrlEncode (name);
  }
}

3.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;
  }
}

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

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

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

但是这样的传递中文可能还会遇到其他中文字出问题,最好是采用下面的方法将中文参数编码。

我采用

4.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("+", "@");
    HyperLink1.NavigateUrl = url + Server.UrlEncode (name);
  }
}

4.2 第二页面的后台代码:

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

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

注意:一定要前后对应,比如在这里,第一页面中是先编码的,后替代,第二页面中就要先替代,再 解码,不然就会出错,如:“DK51 700中继站”

我在开头提到,遇到了比较多的问题:

1.网上的资料有的说是用“%20”来替代“+”,但是我尝试了下,结果却是错误的: “DK51 700中继 站”,这是什么原因呢?是网上说错了吗?但是在下面的情况中,又很让我苦笑不得,不知道具体是什么 原因。

2.接上面,还是用“%20”来替代“+”;我在一次错误的输入,在第一页面后台输入了name = Server.UrlEncode(name);第二页面中解码是 name = Server.HtmlDecode(name);居然是结果对的, “DK51+700中继站”。我换了其他的替代字符,结果也是正确的。

但是我换了其他编码和解码组合:Server.HtmlEncode(name)和Server.UrlDecode(name),或者 Server

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号