Uri构建错误地转义目标字符串

时间:2013-12-18 07:58:21

标签: c# .net http uri urlencode

我正在尝试使用典型的Uri查询字符串构建&name=value

对于其中一个参数,我有以下内容:

myParam=%23%a5%e5%da%bb%86%9d%9a%a2-%8a%27%5b%fb%fdLqy%3e%91%bc%2fv%7d%de%ca%fd%c6%8b%89%07%85%26%90%df%e5k%22%098%b3P%b2%97%c2%ed%90%0a%9f%cf%220)3%94v3%f6%80%ab%86%19%ed%82%b3%ab%0d%e2%c1%ebP%a87%12%95%1e%a0%bey%3c%afe%c7%812%ee%f02%8b%40%da%a5A%0dD%3bKoQ%1a%a9A%3f%f3O%d1%adXE%16%90%f6%b2%e4%e8%b7%baF%e7%ba%aa_%cf%0b%d8%ae%b8%25%23%ba%a9%b0%c2Y%9d%3b%1e%81%5d%ee%04E%22%faT%5cc%23%caP%02%8a%11%ff%7bP%03%9c%f5%9e

我通过使用UrlEncode编码来获取此值(而不是来自HttpUtility,因为它位于可移植类库中,但代码是从.NET公共源代码复制并粘贴的)。

但是,当我创建HttpRequestMessage时,我注意到Uri对变成了这个:

myParam=%1c%7D%DB%A8hv%16%80Mgj%dfi%b5%d4%11%8f%9brH%fa%06%7DY%3C%e2%8c%25%19%85%89%1d%c3+E%91%8d6%F2%C2%C9%B7%E6W%5c%BB%85%D0%90%A3%D6R%85%02%3fP%b1%5c%11%97%88%0e%2f%82%02%cew%01%c3E%E1%D8%AA)%1a%60%ec%d1%13F%8e%1a%D4%AC%23Q%ba%94n%017%d2%ed%7D%d7[%7f%f0%22%e6%8eJ%3f%0e%08q%1f%dc%19*%f5%14%bb%d3R%a3%1e%C9%8ECi%ae%e4%24%91%e9(~%84~%d6Y%cc:%fb%ffK'%e5%e4%a5e%98bV~%5E%ec5%89%dee%93%98%16Z%1eKl%1e

显然,这是一个不同的价值,超级奇怪的是,它比第一个更少逃脱。

值得一提的是,在OriginalString的{​​{1}}属性中,它读作正确的初始版本。

任何想法为什么Uri正在进行额外的不必要的逃避?知道如何防止这种情况吗?

0 个答案:

没有答案