根据 RFC 3986,路径组件的有效字符是:
a-z A-Z 0-9 . - _ ~ ! $ & ' ( ) * + , ; = : @
以及百分比编码的字符,当然还有斜杠 /
。
但是我找不到根据上述规则将字符串转换为格式良好的路径的类。
string rawPath = "/A9_(+@*)/# ?/";
string expectedPath = "/A9_(+@*)/%23%20%3f";
然而,请看下面的代码:
string rawPath = "/A9_(+@*)/# ?/";
Uri.EscapeDataString(rawPath); //Output=>%2FA9_%28%2B%40%2A%29%2F%23%20%3F%2F
Uri.EscapeUriString(rawPath); //Ouput=>/A9_(+@*)/#%20?/
HttpUtility.UrlPathEncode(rawPath); //Ouput=>/A9_(+@*)/#%20?/
我尝试过的所有操作都不会让允许的字符未转义,并且属性会转义所有其他字符。
希望有人可以让我免于编写自己的实用程序!
最佳答案
这些中的每一个都根据 URI 创建中的各种规则提供预期的编码。这是因为包含了保留字符(请参阅 RFC 3968 的第 2.2 节),其中包括标准定义的分隔符 ?
和 #
。这些不会被转义,因为它们是语言定义的一部分。
关于c# - 实际有效的 Url 路径编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40643578/