C# C语言中特殊字符的解码#

C# C语言中特殊字符的解码#,c#,html,C#,Html,我想知道如何将特殊字符解码为HTML 我尝试过使用System.Web.HttpUtility.HtmlDecode,但还不走运。HtmlDecode用于将Html编码的字符串转换为可读的字符串格式。也许HtmlEncode可能就是您实际寻找的内容。这里的问题不是HTML解码,而是文本被编码在一个字符集(例如,windows-1252)中,然后再次编码为第二个字符集(UTF-8) 在UTF-8中,•被解码为E280 A2。当使用windows-1252编码读取此字节序列时,E280 A2编码为。

我想知道如何将特殊字符
解码为HTML


我尝试过使用
System.Web.HttpUtility.HtmlDecode
,但还不走运。

HtmlDecode用于将Html编码的字符串转换为可读的字符串格式。也许
HtmlEncode
可能就是您实际寻找的内容。

这里的问题不是HTML解码,而是文本被编码在一个字符集(例如,windows-1252)中,然后再次编码为第二个字符集(UTF-8)

在UTF-8中,
被解码为
E280 A2
。当使用windows-1252编码读取此字节序列时,
E280 A2
编码为
。(再次保存为UTF-8
成为
C3 A2 E282 AC C2 A2 20 54 65 73 74

如果该文件是windows-1252编码的文件,则可以使用正确的编码读取该文件(例如,作为StreamReader构造函数的参数):

如果文件以不正确的编码保存,则在某些情况下可以反转编码。例如,对于问题中的字符串序列,您可以编写:

string s = "•"; // the string sequence that is not properly encoded
var b = Encoding.GetEncoding("windows-1252").GetBytes(s); // b = `E2 80 A2`
string c = Encoding.UTF8.GetString(b);  // c = `•`
请注意,许多常见的非打印字符的范围在
U+2000
U+2044
()之间,例如“智能引号”、项目符号和破折号。因此,序列
–€?
,其中
是任何字符,通常表示这种类型的编码错误。这样可以更广泛地纠正此类错误:

static string CorrectText(string input)
{
    var winencoding = Encoding.GetEncoding("windows-1252");
    return Regex.Replace(input, "â€.",
        m => Encoding.UTF8.GetString(winencoding.GetBytes(m.Value)));
}

以这种方式调用文本格式不正确的函数将更正某些(但不是全部)错误。例如,
CorrectText(“Test”或“Test”)将返回预期的
•Test–或“

我想OP希望看到的是
而不是
啊,是的。。它说的是字符而不是字符。
如何翻译成
?项目符号的html表示是
•
,还是我遗漏了什么?
static string CorrectText(string input)
{
    var winencoding = Encoding.GetEncoding("windows-1252");
    return Regex.Replace(input, "â€.",
        m => Encoding.UTF8.GetString(winencoding.GetBytes(m.Value)));
}