gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:20:33 27 4
gpt4 key购买 nike

我们在我们的 Web 服务器上存储了一堆奇怪的文档名称(人们上传它们),其中包含各种字符,如空格、& 符号等。当我们生成这些文档的链接时,我们需要对它们进行转义,以便服务器可以查找文件在数据库中的原始名称。但是,没有一个内置的 .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"

关于c# - 如何在 .NET 中正确转义文档名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400445/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com