Tag: % encoding

Uri.EscapeDataString很奇怪

为什么EscapeDataString在.NET 4和4.5之间表现不同? 输出是 Uri.EscapeDataString(“-_.!~*'()”) => “-_.!~*'()” Uri.EscapeDataString(“-_.!~*'()”) => “-_.%21~%2A%27%28%29” 文档 默认情况下,EscapeDataString方法将除RFC 2396非保留字符之外的所有字符转换为hex表示forms。 如果启用了国际资源标识符(IRI)或国际化域名(IDN)解析,则EscapeDataString方法将除RFC 3986非保留字符之外的所有字符转换为其hex表示forms。 在转义之前,所有Unicode字符都将转换为UTF-8格式。 作为参考,非保留字符在RFC 2396中定义如下: unreserved = alphanum | mark mark = “-” | “_” | “.” | “!” | “~” | “*” | “‘” | (” | “)” 在RFC 3986中 : ALPHA / DIGIT / “-” / “.” / “_” / “~” […]