在对url进行编码时,该用哪一个?这两都使用上有什么区别吗?
测试:
输出:
原数据:文件上(传)篇.doc
server.urlencode:%ce%c4%bc%fe%c9%cf%a3%a8%b4%ab%a3%a9%c6%aa.doc
server.urldecode:文件上(传)篇.doc
httputility.urlencode:%e6%96%87%e4%bb%b6%e4%b8%8a%ef%bc%88%e4%bc%a0%ef%bc%89%e7%af%87.doc
httputility.urldecode:文件上(传)篇.doc
区别在于:httputility.urlencode()默认是以utf8对url进行编码,而server.urlencode()则以默认的编码对url进行编码。
在用 asp.net 开发页面的时候, 我们常常通过 system.web.httputility.urlencode 和 urldecode 在页面间通过 url 传递参数. 成对的使用 encode 和 decode 是没有问题的.
但是, 我们在编写文件下载的页面的时候, 常常用如下方法来指定下载的文件的名称:
之所以转换成 utf8 是为了支持中文文件名.
这 时候问题就来了, 因为 httputility.urlencode 在 encode 的时候, 将空格转换成加号('+'), 在 decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格就变成了加号.
一个解决办法是, 在 httputility 的 urlencode 之后, 将 "+" 替换成 "%20"( 如果原来是 "+" 则被转换成 "%2b" ) , 如:
filename = httputility.urlencode(filename, encoding.utf8);
filename = filename.replace("+", "%20");不明白微软为什么要把空格转换成加号而不是"%20". 记得 jdk 的 urlencoder 是将空格转换成 "%20"的.
经检查, 在 .net 2.0 也是这样.
上面是从别的地方拷贝的,写得很好,我自己的一个程序中也遇到同样的问题,默认aspx是以utf-8为编码的,在我这个程序中必须用gb2312为默认编码
(<globalization requestencoding="gb2312" responseencoding="gb2312"/>),
问 题出现了,以前没有问题的httputility.urldecode在page.request回的值是乱码这就是上面说的 httputility.urldecode默认以utf8对url进行编码,这种情况下面只需将httputility.urldecode改成 server.urlencode即可。
石家庄网站建设的优点:我们是专属定制,制作符合您公司业务、风格的网站,这就做到给您制作的网站是网络上独一无二的网站,这样更有利于搜索引擎的收录。如果您喜欢网络上某个风格的网站或者网站模板,我们是只仿制而不直接套用,我们会对其中的结构和样式做增减优化,做…
竞价排名营销是一种通过 竞价购买搜索引擎中关键词或关键短语的广告方式。竞价排名营销分为两种类型。 第一种,直接为真正的搜索引擎结果的排名付费,也就是说付的钱越多,网页所获得的排名名也就越高。 第二种则更类似于普通的广告。这种竞价排名营销方式通过…
网站优化对网站来说是非常重要的,直接决定和影响着网站所起到的作用,以及在各个地方当中的排名。在进行seo优化的过程中,我们必须要坚持一定的原则,真正的把这些事情做得更好,才可以确保最终的结果,这对于我们来说是非常重要的事。 SEO优化主要分为8小步: …