Uri.EscapeDataString 和 Server.UrlEncoding 的区别
今天在iis中访问一个即含有空格又含有#的文件名时,通过 iis 直接访问都无法到达,显示404,即便是 urlencode 文件名后依然无济于事,最后通过 gpt 问到了答案。
Uri.EscapeDataString
和Server.UrlEncode
是.NET Framework中用于URL编码的两个方法,它们有以下区别:
-
命名空间和所属类:
Uri.EscapeDataString
方法位于System
命名空间下的Uri
类中,而Server.UrlEncode
方法位于System.Web
命名空间下的HttpServerUtility
类中。因此,Uri.EscapeDataString
可以在任何.NET应用程序中使用,而Server.UrlEncode
主要用于Web应用程序。 -
编码范围:
Uri.EscapeDataString
方法对所有非保留字符进行编码,包括URL路径中的斜杠(/
)和查询字符串中的等号(=
)。而Server.UrlEncode
方法只对特定的字符进行编码,例如空格(空格被编码为+
)和查询字符串中的保留字符(如=
、&
、?
等)。 -
编码方式:
Server.UrlEncode
方法将空格编码为+
符号,而Uri.EscapeDataString
方法将空格编码为%20
。这意味着在处理查询字符串时,Server.UrlEncode
相对于Uri.EscapeDataString
更适合,因为大多数服务器端语言(如ASP.NET)会自动将+
解码为空格。 -
使用场景:
Uri.EscapeDataString
方法更通用,可以在各种情况下使用,包括生成URL、构建查询字符串等。Server.UrlEncode
方法主要用于ASP.NET Web应用程序中,对于在Web环境下处理URL和查询字符串时更常见。
综上所述,选择使用哪个方法取决于具体的使用场景和需求。一般来说,如果是在Web应用程序中处理URL和查询字符串,优先考虑使用Server.UrlEncode
方法。如果需要在非Web环境下进行URL编码,可以使用Uri.EscapeDataString
方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2023-05-17 c# 获取指定进程的命令行
2022-05-17 tomcat 打开实时控制台
2022-05-17 centos 7 tomcat 8 开机自启
2021-05-17 无日志文件还原数据库(只有mdf无ldf)
2019-05-17 c# 动态加载tlb为程序集