如何正确解码显示的重音字符

本文关键字:字符 显示 何正确 解码 | 更新日期: 2023-09-27 18:29:00

我的原始输入文件文本文件包含一个字符串:

Caf&eacute (Should be Café)

文本文件是一个UTF8文件。

比如说,输出是另一个文本文件,所以它不一定适用于网页。

我可以使用哪些C#方法来输出正确的格式Café

显然是一个常见的问题?

如何正确解码显示的重音字符

您尝试过System.Web.HttpUtility.HtmlDecode("Café")吗?它返回538M个结果

这是HTML编码的文本。你需要解码它:

string decoded = HttpUtility.HtmlDecode(text);

更新:法语符号"é"有HTML代码"é",因此,您需要修复您的输入字符串。

使用XML文件时应使用SecurityElement.Eescape。

HtmlEncode将对许多不需要的额外实体进行编码。XML只要求您转义>、<amp;,",和',SecurityElement.Escape会这样做。

当通过XML解析器读回文件时,这种转换是由解析器为您完成的,您不需要对其进行"解码"

编辑:当然,这只有在编写XML文件时才有用。

我认为这是有效的:

string utf8String = "Your string";
Encoding utf8 = Encoding.UTF8;
Encoding unicode = Encoding.Unicode;
byte[] utf8Bytes = utf8.GetBytes(utf8String);
byte[] unicodeBytes = Encoding.Convert(utf8, unicode, utf8Bytes);
char[] uniChars = new char[unicode.GetCharCount(unicodeBytes, 0, unicodeBytes.Length)];
unicode.GetChars(unicodeBytes, 0, unicodeBytes.Length, uniChars, 0);
string unicodeString = new string(uniChars);

使用HttpUtility.HtmlDecode。示例:

class Program
{
    static void Main()
    {
        XDocument doc = new XDocument(new XElement("test", 
            HttpUtility.HtmlDecode("caf&eacute;")));
        Console.WriteLine(doc);
        Console.ReadKey();
    }
}