URL的传递字符串问题小研究
2009-05-12 22:34:07来源:未知 阅读 ()
前几天在调程序的时候遇到了比较郁闷的问题,我用URL从一个页面传递字符串到另一个页面的时,出现了个奇怪的问题,我要传递的字符串是“DK51+700中继站”;可是另一个页面接收到字符串却是:“DK51 700中继口”;加号变成了空格,“站”不能解析出来,变成了不能识别的符号“口”。
我上网查找了原因:URL中有些字符被转义,比如空格被编码成加号,于是传的参数明明是加号,获取的值却成了空格。
按照网上的建议,我们应该对要传递的参数进行编码处理。于是,我对传递的参数进行了处理,但是又衍生了一堆问题出来;我当时为了节约时间,就没有仔细研究,用了字符串中的Replace()方法在传送前代替了这两个字符,接收到了再代替回来。现在我来具体的展示下这个问题。
1.首先,我们先看下我的开始的问题(环境:VS2008):1.1. 新建一个网站,在其中添加一个页面,一个页面是Defaul.aspx,另一个页面Defaul2.aspx,在第一个页面中添加一个控件:HyperLink1;后台代码:
1.2. 在第二个页面中添加一个Label控件Label1;后台代码:
1.3. 结果显示:“DK51 700中继口”。
2.我当时的解决方法:用了字符串中的Replace()方法在传送前代替了这两个字符,接收到了再代替回来。
2.1第一个页面的后台代码:2.2.第二个页面中,后台代码:
2.3.结果是:“DK51+700中继站”。正确!
后来我在网上找到这个这样的设置,在Web.config中设置:
这样的话,就不需要替代中文了,只需要把“+”替代,中文在这个过程就不会出现问题了。
但是这样的传递中文可能还会遇到其他中文字出问题,最好是采用下面的方法将中文参数编码。
3. 我采用URLEncode()编码,采用URLEncode()不在Web.config中设置好像也可以,在我的测试中没有问题,但是为了安全,我们还是添加上上面的设置。
3.1.页面上都是一致的,第一页面的后台代码:3.2.第二个页面中,后台代码:
3.3.结果是:“DK51+700中继站”。正确!
后来我在网上找到这个这样的设置,在Web.config中设置:
这样的话,就不需要替代中文了,只需要把“+”替代,中文在这个过程就不会出现问题了。
但是这样的传递中文可能还会遇到其他中文字出问题,最好是采用下面的方法将中文参数编码。
我采用URLEncode()编码,采用URLEncode()不在Web.config中设置好像也可以,在我的测试中没有问题,但是为了安全,我们还是添加上上面的设置。
4.1.页面上都是一致的,第一页面的后台代码:
4.2 第二页面的后台代码:
4.3 结果是:“DK51+700中继站”。正确!
注意:一定要前后对应,比如在这里,第一页面中是先编码的,后替代,第二页面中就要先替代,再解码,不然就会出错,如:“DK51 700中继站”
我在开头提到,遇到了比较多的问题:1. 网上的资料有的说是用“%20”来替代“+”,但是我尝试了下,结果却是错误的: “DK51 700中继站”,这是什么原因呢?是网上说错了吗?但是在下面的情况中,又很让我苦笑不得,不知道具体是什么原因。
2. 接上面,还是用“%20”来替代“+”;我在一次错误的输入,在第一页面后台输入了name = Server.UrlEncode(name);第二页面中解码是 name = Server.HtmlDecode(name);居然是结果对的,“DK51+700中继站”。我换了其他的替代字符,结果也是正确的。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 实现ASP.NET字符串截取的方法 2020-03-10
- 详解.net mvc session失效问题 2020-02-21
- Asp.net MVC中Razor常见的问题与解决方法总结 2020-01-18
- .NET发送邮件遇到问题及解决方法 2020-01-18
- 总结ASP.NET过滤HTML字符串方法 2019-12-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash