HttpServerUtility.UrlPathEncode和HttpServerUtility.UrlEncode有什么不同?什么时候我应该选择一个而不是另一个?
发布于 2010-11-10 23:21:53
更新:从4.5开始,根据微软的参考,微软建议只使用UrlEncode。此外,以前在MSDN中列出的信息并不完全描述这两种方法的行为-请参阅注释。
不同之处在于空间转义- UrlEncode将它们转义为+符号,UrlPathEncode转义为%20。+和%20只有在它们是QueryString部分per W3C的一部分时才是等价的。所以你不能用+号转义整个URL,只能用querystring部分。底线是UrlPathEncode总是更好的imho
可以使用UrlEncode()方法或UrlPathEncode()方法对
进行编码。但是,这些方法返回不同的结果。UrlEncode()方法将每个空格字符转换为加号字符(+)。UrlPathEncode()方法将每个空格字符转换为字符串"%20",该字符串以十六进制表示法表示一个空格。在对网址的路径部分进行编码时,请使用UrlPathEncode()方法,以保证解码后的网址一致,而与执行解码的平台或浏览器无关。
http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx
发布于 2012-12-22 00:12:41
UrlEncode对于查询字符串值非常有用(因此,在每个=的左边,尤其是右边)。
此url、foo、fooval、bar和barval中的
应分别进行UrlEncode:
http://www.example.com/whatever?foo=fooval&bar=barval
UrlEncode将所有内容(如?、&、=和/、重音字符或其他非ASCII码等)编码为%样式的编码,但空格除外。这是表单风格的编码,最适合你想要放入查询字符串(或者url中的两个斜杠之间)作为参数的东西,而不会与url的控制字符(如&)弄得乱七八糟。否则,用户表单输入或db值中不合适的&或=可能会破坏某些东西。
编辑:与UrlEncode非常接近,可能更可取,尽管我不知道确切的区别。
UrlPathEncode对查询字符串的其余部分很有用,它会影响?左边的所有内容。
在此url中,整个url (从http到barval)都应通过UrlPathEncode运行。
http://www.example.com/whatever?foo=fooval&bar=barval
UrlPathEncode不编码?、&、=或/。但是,它和UrlEncode一样,使用%符号对重音/非ASCII字符进行编码,空格也变成%20。这对于确保url有效很有用,因为空格和重音字符不是。它不会接触到您的查询字符串(?右边的所有内容),所以您必须使用上面的UrlEncode对其进行编码。
发布于 2019-03-07 03:27:17
为了尽可能简单地解释它:
HttpUtility.UrlPathEncode("http://www.foo.com/a b/?eggs=ham&bacon=1") 变成了
http://www.foo.com/a%20b/?eggs=ham&bacon=1和
HttpUtility.UrlEncode("http://www.foo.com/a b/?eggs=ham&bacon=1") 变成了
http%3a%2f%2fwww.foo.com%2fa+b%2f%3feggs%3dham%26bacon%3d1https://stackoverflow.com/questions/4145823
复制相似问题