我有加密一个字符串,它看起来像这样HttpUtility.UrlEncode不编码的字符,如+
Pfx32q+xLq4R+VocXy4IC8aQNdmFqdA284THap54Bl4=
在加密这个字符串我们称之为HttpUtility.UrlEncode("Pfx32q+xLq4R+VocXy4IC8aQNdmFqdA284THap54Bl4=")
经过加密的字符串作为参数,它返回一个值
Pfx32q%2BxLq4R%2BVocXy4IC8aQNdmFqdA284THap54Bl4%3D
其中+
是2%等替代等我开发的系统,但是当同样的代码是一个生产服务器加上没有得到编码上运行,而不是它仍然是+。
我们无法指出究竟是什么导致了这一点。有没有一个场景或一个案例,在调用HttpUtility.UrlEncode
方法时,+这样的字符不会被编码?
'+'也是URL的有效字符是它不被这里所编码的原因是[基础URI](https://tools.ietf.org/html/rfc3986)定义 – Webruster
是你在开发盒和服务器上运行相同的.NET版本?服务器可能运行单声道? .NET 4.0及以上版本的Microsoft源代码肯定会转义'+'字符。这里请参阅'IsUrlSafeChar' http://referencesource.microsoft.com/#System/net/System/Net/WebUtility.cs尽管有RFC规则,注释中明确提到了“+”作为转义。 – Baldrick
URI *路径*和*数据*以不同的方式编码。您应该使用EscapeDataString作为数据。您还应该确保在服务器和计算机上使用相同的.NET版本,并将其升级。 –