Asp.net HttpUtility.HtmlCode无法解码大于127的ASCII码

Asp.net HttpUtility.HtmlCode无法解码大于127的ASCII码,asp.net,Asp.net,我有一个在WebBrowser中以编码字符形式显示的字符列表,如€ ... 但当将这些字符发布到服务器上时,我意识到HttpUtility.HtmlDecode无法像浏览器那样将它们转换为字符,它们都变成了空格 text = System.Web.HttpUtility.HtmlDecode("€"); 我希望它返回欧元,但它返回空间。同样的事情也发生在其他一些角色身上 有人知道如何解决这个问题吗?这通常是使用文字值并混合使用UTF-8和ASCII的结果。

我有一个在WebBrowser中以编码字符形式显示的字符列表,如€ ... 但当将这些字符发布到服务器上时,我意识到HttpUtility.HtmlDecode无法像浏览器那样将它们转换为字符,它们都变成了空格

text = System.Web.HttpUtility.HtmlDecode("€");
我希望它返回欧元,但它返回空间。同样的事情也发生在其他一些角色身上


有人知道如何解决这个问题吗?

这通常是使用文字值并混合使用UTF-8和ASCII的结果。在UTF-8中,欧元符号被编码为3字节,因此它没有对应的ASCII码

更新

如果您使用的是UTF-8,那么您的代码是非法的,因为它只支持前128个字符,其余的编码是多字节的。您需要使用Unicode语法:

  // !!! NOT HtmlDecode!!!
  text = System.Web.HttpUtility.UrlDecode("%E2%82%AC");
更新


好的,我保留了代码的原样,但添加了注释,说明它不起作用。它不起作用,因为它不是HTML关注的编码-它不是HTML。这与URL有关,因此您需要使用
UrlDecode

ASCII为7位;没有字符128到255。您链接的MSDN文章遵循了长期以来假装ASCII是8位的传统;这篇文章实际上说明了这一点


我不知道你为什么不简单地写
&euro(兼容性?)

您通常希望执行以下操作:

string html = "€"
string trash = WebUtility.HtmlDecode(html);
//Convert from default encoding to UTF8
byte[] bytes = Encoding.Default.GetBytes(trash);
string proper = Encoding.UTF8.GetString(bytes);

ASCII仅适用于127。。。。你想用ANSI吗?你可以在这里找到我试过你的代码,但没用。此外,我需要一种对€;写一封有意义的信。我无法转换€;到%E2%82%AC解码itI接收€;来自客户,他想将其显示为欧元符号