Dav*_*dez 5 .net c# mono webclient
我正在尝试将.NET应用程序从 Windows移植到 Mono,但是在 Windows 上运行的某些代码不再在mono上运行(如预期的那样):
WebClient client = new WebClient ();
Console.WriteLine (client.DownloadString("http://www.maxima.fm/51Chart/"));
Run Code Online (Sandbox Code Playgroud)
它似乎正确地将编码检测为 UTF-8(并且手动将编码设置为 UTF-8 或 ASCII 也不起作用)仍然存在“?” 人物
您正在写入控制台。也许您的控制台配置不正确,无法显示某些字符。通过调试并将结果存储到中间变量中来确保。
此外,您作为示例提供的网站也完全混乱。Web 服务器发送Content-Type: text/html; charset=iso-8859-1HTTP 标头,在生成的 HTML 中您会看到<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />这当然是完全不连贯的。您不能期望 HTTP 客户端在面对非标准站点时能够正确运行,您得到的是意外的行为。
尝试在一些遵守最低网络标准的网站上进行测试。
备注:WebClient实现了IDisposable,因此请确保将其包装在using语句中。
更新:
要使其适用于此特定站点,您可以尝试手动下载响应并指定正确的编码:
// You may try different encodings here (for me it worked with iso-8859-1)
var encoding = Encoding.GetEncoding("iso-8859-1");
using (var client = new WebClient())
{
using (var stream = client.OpenRead("http://www.maxima.fm/51Chart/"))
using (var reader = new StreamReader(stream, encoding))
{
var result = reader.ReadToEnd();
Console.WriteLine(result);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2319 次 |
| 最近记录: |