c# - 实际有效的 Url 路径编码?

标签 c# urlencode

根据 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/

相关文章:

c# - 系统.Data.SqlTypes.SqlTypeException : SqlDateTime overflow

c# - 用于常见媒体播放器功能的 Windows API?

encryption - 指定的 key 不是此加密的有效 key : Key size is not valid. 获取的 key 长度为:15

c# - 删除#C 中动态添加的组合框

C#将透明的PNG复制到剪贴板

c# - Windows Phone 导航到同一页面的新实例

ios - Swift 4 中 '(撇号) 的百分比编码输出不正确

php - 为什么 PHP 中的 rawurlencode() 会向 & 符号添加额外的转义字符?

java - 如何在 JSOUP 中禁用转义模式?

javascript - 字符解码失败。值(value)被破坏