加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在.NET中正确转义文档名称?

发布时间:2020-12-15 17:42:38 所属栏目:百科 来源:网络整理
导读:我们在我们的网络服务器(人们上传它们)上存储一堆奇怪的文件名称,它们具有空格,符号等各种字符.当我们生成链接到这些文档时,我们需要转义它们,以便服务器可以查找文件其原始名称在数据库中.但是,所有内置.NET转义函数都不会正常运行. 拿文件Hello#There.docx
我们在我们的网络服务器(人们上传它们)上存储一堆奇怪的文件名称,它们具有空格,&符号等各种字符.当我们生成链接到这些文档时,我们需要转义它们,以便服务器可以查找文件其原始名称在数据库中.但是,所有内置.NET转义函数都不会正常运行.

拿文件Hello#There.docx:

UrlEncode将正确处理:

HttpUtility.UrlEncode("Hello#There");
"Hello%23There"

但是,UrlEncode不会正确处理Hello There.docx:

HttpUtility.UrlEncode("Hello There.docx");
"Hello+There.docx"

该符号仅对URL参数有效,而不适用于文档名称.有趣的是,这实际上可以在Visual Studio测试Web服务器上工作,但不在IIS上.

UrlPathEncode功能适用于空格:

HttpUtility.UrlPathEncode("Hello There.docx");
"Hello%20There.docx"

但是,它不会转义其他字符,如#字符:

HttpUtility.UrlPathEncode("Hello#There.docx");
"Hello#There.docx"

此链接无效,因为#被解释为URL哈希,甚至不会访问服务器.

是否有一个.NET实用程序方法来转义文档名称中的所有非字母数字字符,或者我必须自己编写?

解决方法

看看 Uri.EscapeDataString Method:
Uri.EscapeDataString("Hello There.docx")  // "Hello%20There.docx"

Uri.EscapeDataString("Hello#There.docx")  // "Hello%23There.docx"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读