HttpServerUtility.UrlPathEncode
和之间有什么区别HttpServerUtility.UrlEncode
?什么时候我应该选择另一个?
Sco*_*ord 26
UrlEncode对查询字符串值很有用(所以在每个=的左侧或特别是右侧).
在这个网址中,foo,fooval,bar和barval应该是每个单独的UrlEncode:
UrlEncode将所有内容(例如?,&,=和/,重音符号或其他非ASCII字符等)编码为%-style编码,但编码为+的空格除外.这是表单样式编码,最适合您打算放入查询字符串(或者可能在网址中的两个斜杠之间)作为参数,而不会使用url的控制字符(如&)获取所有jiggy.否则,不幸的是,在用户的表单输入或db值中放置&或=可能会破坏事物.
编辑:Uri.EscapeDataString是与UrlEncode非常接近的匹配,可能更好,但我不知道确切的差异.
UrlPathEncode对查询字符串的其余部分很有用,它会影响到左边的所有内容.
在此网址中,整个网址(从http到barval)应该通过UrlPathEncode运行.
UrlPathEncode不编码?,&,=或/.但是,它与UrlEncode一样,使用%表示法编码带重音/非ASCII字符,空格也变为%20.这对于确保url有效非常有用,因为空格和重音字符不是.它不会触及您的查询字符串(右边的所有内容?),因此您必须使用上面的UrlEncode对其进行编码.
Art*_*miy 18
更新:从4.5开始,根据MSDN参考,Microsoft建议仅使用UrlEncode.此外,MSDN中先前列出的信息并未完全描述这两种方法的行为 - 请参阅注释.
区别在于空间转义 - UrlEncode将它们转换为+符号,UrlPathEncode转义为%20.如果它们是每个W3C的QueryString部分的一部分,则+和%20仅相等.所以你不能使用+符号来逃避整个URL,只能使用查询字符串部分.底线是UrlPathEncode永远是更好的imho
您可以使用UrlEncode()方法或UrlPathEncode()方法对URL进行编码.但是,这些方法会返回不同的结果.UrlEncode()方法将每个空格字符转换为加号字符(+).UrlPathEncode()方法将每个空格字符转换为字符串"%20",表示十六进制表示法的空格.在对URL的路径部分进行编码时,请使用UrlPathEncode()方法,以保证解码的URL一致,无论哪个平台或浏览器执行解码.
归档时间: |
|
查看次数: |
13381 次 |
最近记录: |