【问题标题】:How to properly decode accented characters for display如何正确解码重音字符以进行显示
【发布时间】:2012-03-26 16:27:20
【问题描述】:

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

Caf&eacute (Should be Café)

文本文件是 UTF8 文件。

输出可以说是另一个文本文件,因此不一定是网页。

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

Apparently a common problem?

【问题讨论】:

  • &eacute 后面应该有一个 ; 终结符字符以正确呈现 é。
  • 那会是个问题!因为我们的原始文件不包含任何终止符...大坝。
  • 是的,这将是一个大问题...您必须稍微“按摩”数据才能使用提供的解决方案...

标签: c# encoding special-characters decoding


【解决方案1】:

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

【讨论】:

  • 谢谢,但这也行不通:System.Web.HttpUtility.UrlDecode("Caf&eacute")
  • @Fixer 您需要在实体末尾添加分号é
  • @Matthew 你的意思是:string s = System.Web.HttpUtility.UrlDecode("Café"); ?
【解决方案2】:

这是 HTML 编码的文本。您需要对其进行解码:

string decoded = HttpUtility.HtmlDecode(text);

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

【讨论】:

  • 不抱歉不起作用?字符串解码 = System.Web.HttpUtility.HtmlDecode("Caf&eacute");
  • 那是因为你应该添加';'到你的咖啡馆结束
【解决方案3】:

在处理 XML 文件时,您应该使用 SecurityElement.Escape

HtmlEncode 将编码许多不需要的额外实体。 XML 只要求您转义 >、SecurityElement.Escape 会这样做。

当通过 XML 解析器读回文件时,这种转换是由解析器为您完成的,您不需要“解码”它。

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

【讨论】:

  • 这也是一种很酷的方式来清理 Html 的输入。使用 HttpUtility.Encode 时,您还可以对重音字符进行编码,这些字符将在输入中显示编码(不需要)。使用这个只有 5 个元素将被显示为编码,女巫对我来说是可以接受的。谢谢。
【解决方案4】:

我认为这可行:

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);

【讨论】:

  • 谢谢,但不起作用:string decodedString = utf8.GetString(utf8.GetBytes("Caf&eacute"));
【解决方案5】:

使用HttpUtility.HtmlDecode。示例:

class Program
{
    static void Main()
    {
        XDocument doc = new XDocument(new XElement("test", 
            HttpUtility.HtmlDecode("café")));

        Console.WriteLine(doc);
        Console.ReadKey();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2021-04-10
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 2015-12-07
    相关资源
    最近更新 更多