C# 使用哪种HttpUtility解码方法?

C# 使用哪种HttpUtility解码方法?,c#,asp.net,C#,Asp.net,这也许是个愚蠢的问题,但每次我都会被它绊倒 HttpUtility具有方法HtmlDecode和UrlDecode。这两种方法是否解码了我可能发现的任何东西(Html/Http相关)?我什么时候必须使用它们,我应该使用哪一个 刚才我犯了一个错误。这是我的错误日志: Payment receiver was not payment@mysite.com. (it was payment%40mysite.com). 但是,在使用之前,我将电子邮件地址包装在HttpUtility.HtmlDeco

这也许是个愚蠢的问题,但每次我都会被它绊倒

HttpUtility
具有方法
HtmlDecode
UrlDecode
。这两种方法是否解码了我可能发现的任何东西(Html/Http相关)?我什么时候必须使用它们,我应该使用哪一个

刚才我犯了一个错误。这是我的错误日志:

Payment receiver was not payment@mysite.com. (it was payment%40mysite.com).
但是,在使用之前,我将电子邮件地址包装在
HttpUtility.HtmlDecode
中。事实证明,我必须使用
.UrlDecode
,但是这个电子邮件地址不是来自URL,所以对我来说并不明显


有人能澄清一下吗?

同样的编码也用于表单POST请求

我猜是有什么东西没有解码就“赤裸裸地”读它

Html编码/解码仅用于转义包含字符的字符串,否则这些字符将被解释为Html控制字符。该过程将字符转换为html实体,然后再转换回来

Url编码是为了避免URI中不允许使用许多字符;或者因为它们也可能被误解。因此使用百分比编码

http请求体中也使用百分比编码

当然,在这两种情况下,它也是在请求/响应中独立于字符集表达特定字符代码的一种方式;但同样,解释特定代码的含义也取决于了解特定字符集。一般来说,您不必担心这一点,但它可能很重要(尤其是在HTML情况下)。

请参阅


这与您的情况相反,但本质上您需要在任何时候使用某种地址(URL和是的,电子邮件地址)时使用UrlEncode/Decode。HtmlEncode/Decode用于浏览器通常会呈现的代码(html/xml标记)。

当您看到
%xx
时,这意味着发生了-这是一种URL编码方案,因此您需要使用
UrlEncode
/
UrlDecode


HtmlEncode
HtmlDecode
方法用于对HTML显示的元素进行编码和解码-因此像
&
这样的东西被编码到
&

URLEncode将URL中不允许的字符转换为可作为URL解析的等效字符。在你的例子中,@变成了%40。URLDecode与此相反


HTMLEncode类似于URLEncode,但目标环境是嵌套在HTML中的文本。这有助于浏览器将内容解释为HTML,但在呈现时,它应该看起来像解码版本。HtmlCode与此相反。

这种编码只在URL和POST请求中使用,还是在其他地方使用?它可以在任何地方使用,但最常用于URL、URI和URN。同样,其他依靠HTTP的协议也可能使用百分比编码。这些内容是否来自GET请求?(AJAX等。您看不到它的URL,但它仍然是GET请求)。