【问题标题】:C# XML downloading with wrong encodingC# XML 下载编码错误
【发布时间】:2016-04-28 13:16:29
【问题描述】:

我尝试了很多方法来反序列化 URL 中的这个 xml。但由于我认为是编码问题,没有一个成功。

如果我右键下载,然后从我的 C 盘反序列化它,它工作正常。

所以我决定先尝试下载文件,然后再进行处理。但是它通过代码下载的文件也编码错误!

我不知道从哪里开始,但我想可能在下载时强制使用 UTF-8 或 UTF-16 编码??

这里是下载代码:

using (var client = new WebClient())
{
    client.DownloadFile("http://example.com/my.xml", "my.xml");
}

How to download a file from a URL in C#?

下载后的文件图片

【问题讨论】:

  • 你试过除记事本以外的其他编辑器吗?
  • @Gusman 我刚试过记事本++。看起来不同,但同样疯狂
  • @CharlesMager 未注册的标题?不确定。如下设置编码 UTF8 似乎有效。 (它让我困惑了好几个小时——尝试了 10 种左右不同的方法 [Streams/reads])
  • 有点奇怪!抱歉,看到你修改后删除了我的评论。 feed.xml 会出现在一个 xml 文件中,这很奇怪,并且鉴于 UTF8 是 ASCII 的超集,如果它试图解码,您会希望看到大部分内容。
  • 可以压缩...这个网址可以公开吗,可以分享一下吗?

标签: c# xml encoding utf-8 utf-16


【解决方案1】:

试试这个

using (var client = new WebClient())
{
    client.Encoding = System.Text.Encoding.UTF8;
    client.DownloadFile("http://example.com/my.xml", "my.xml");
}

【讨论】:

  • 刚刚尝试使用Encoding.UTF8Encoding.ASCII 来分隔文件。 UTF8 按照您的建议修复它! :) 而ASCII 看起来就像我得到的垃圾。所以我认为这是默认设置。
  • 其实我把它拿回来了,有些东西起作用了,但是当我再次运行时它就不行了
【解决方案2】:

该文件实际上是 gzip 格式。尽管它是一个 xml url。

我的连接一定是在接受 gzip,所以服务器就这样响应了。尽管我尝试了几种不同的方法,但有不同的变化。 (下载/字符串流,从 URL 解析字符串等)

对我来说,解决方案是下载 gzip 文件,然后在反序列化之前解压缩。告诉服务器不要发送 gzip 没有用。但对某些人来说可能是一种可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多