【问题标题】:How can I convert a html text to utf-8 with C#如何使用 C# 将 html 文本转换为 utf-8
【发布时间】:2015-04-30 14:15:26
【问题描述】:

如何转换我的输入值

是时候参加本周末的活动了。浏览并查看您周围正在发生的事件。玩得开心Ciao! LoudNProudLive 系列:“Hit Makers”特别版 LoudNProudLive 系列推出了一个“Hit Makers”特别版,其中包括头条新闻 Tolu(Project Fame)、Simi 和 Oyinkanade。日期:2015 年 4 月 30 日星期四时间:晚上 8 点地点:ELIAS(Ocean Bay Mall),[…]

转为 utf-8 格式的人类可读句子。我尝试了下面的代码,这就是我得到的。 -

周末活动时间到了。浏览并查看您周围正在发生的事件。玩得开心Ciao! LoudNProudLive 系列:“Hit Makers”特别版 LoudNProudLive 系列推出了一个“Hit Makers”特别版,其中有头条新闻 Tolu(Project Fame)、Simi 和 Oyinkanade。日期:2015 年 4 月 30 日星期四时间:晚上 8 点地点:ELIAS(Ocean Bay Mall),[…]

 //convert html to utf-8
    private static string cleanUpCodes(string value)
    {
        //convert from iso to utf-8
        Encoding iso = Encoding.GetEncoding("windows-1252");
        Encoding utf8 = Encoding.UTF8;
        byte[] isoBytes = iso.GetBytes(value);
        byte[] utf8Bytes = Encoding.Convert(utf8, iso, isoBytes);
        string msg = utf8.GetString(utf8Bytes);

        //convert to real html
        msg = HttpUtility.HtmlDecode(msg);

        return msg;
    }

【问题讨论】:

  • 如果源编码确实是windows-1252,那应该是对的。是什么让您认为源文档是 windows-1252 编码的呢?从外观上看,我猜它是 UTF-16LE,但最好只是找出它是什么。

标签: c# utf-8 iso-8859-1


【解决方案1】:

大概这是使用错误的编码解码,因此是奇怪的文本。在这种情况下,你不想在编码之间Convert,你只想取回你的字节然后再去一次:

例如:

var bytes = Encoding.Default.GetBytes(value);
var result = Encoding.UTF8.GetString(bytes);

这给出了这个,非常接近:

这个周末的活动时间到了。浏览并查看您周围正在发生的事件。玩得开心Ciao! LoudNProudLive 系列:“Hit Makers”特别版 LoudNProudLive 系列展示了一个“Hit Makers”特别版,其中包括头条新闻 Tolu(Project Fame)、Simi 和 Oyinkanade。日期:2015 年 4 月 30 日星期四时间:晚上 8 点地点:ELIAS(Ocean Bay Mall),[�]

我倾向于找到问题的根源 - 你是如何得到这个字符串的?

【讨论】:

  • 我是从一个 rss 提要得到的
  • 您能否提供一个链接并展示您的阅读方式?如果不能通过更改而不是后处理来解决这个问题,我会感到惊讶。
猜你喜欢
  • 2019-05-15
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 2011-04-18
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多