当前位置: 首页 > 编程语言 > C#

如何在.NET中正确转义文档名称?分享

时间:2023-04-10 14:55:41 C#

.NET中如何正确转义文件名?我们的Web服务器(人们上传它们的地方)上存储了一堆奇怪的文档名称,其中包含空格、符号等各种字符。当我们生成这些文档的链接时,我们需要对它们进行转义,以便服务器可以查找文件在数据库中的原始名称。但是,在所有情况下,内置的.NET转义函数都不会正常工作。以文件Hello#There.docx:UrlEncode将正确处理:HttpUtility.UrlEncode("Hello#There");"Hello%23There"但是,UrlEncode不会正确处理HelloThere.docx:HttpUtility.UrlEncode("HelloThere.docx");“Hello+There.docx”+号只对URL参数有效,对文件名无效。有趣的是,这实际上适用于VisualStudio测试Web服务器,但不适用于IIS。UrlPathEncode函数适用于空格:HttpUtility.UrlPathEncode("HelloThere.docx");"Hello%20There.docx"但是,它不会转义其他字符,例如#字符:HttpUtility.UrlPathEncode("Hello#There.docx");“Hello#There.docx”此链接无效,因为#被解释为URL哈希,甚至从未到达服务器。是否有.NET实用方法来转义文档名称中的所有非字母数字字符,还是我必须自己编写?看一下Uri.EscapeDataString方法:Uri.EscapeDataString("HelloThere.docx")//"Hello%20There.docx"Uri.EscapeDataString("Hello#There.docx")//"Hello%23There.docx"我会以不同的方式处理它:不要将文档名称用作查找中的键-使用Guid或其他一些id参数,您可以将它们映射到数据库磁盘上的文档名称。这不仅保证了唯一性,而且您也不会首先遇到这个转义问题。您可以使用@character来转义字符串。请参阅下面的代码片段。字符串str=@"nnnn";控制台.WriteLine(str);输出:nnnnstringstr1=@"df%%^^)t%%";控制台.WriteLine(str1);output:df%%^^)t%%这种格式对于路径名和创建正则表达式很有用。以上是C#学习教程:.NET中文档名如何正确转义?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: