我正在尝试移植.NET应用程序从 Windows 到 Mono,但某些在 Windows 上运行的代码不再运行(正如预期的那样) on mono:
WebClient client = new WebClient ();
Console.WriteLine (client.DownloadString("http://www.maxima.fm/51Chart/"));
它似乎正确检测到编码为 UTF-8(并且手动将编码设置为 UTF-8 或 ASCII 也不起作用)仍然有 '?'人物
您正在写入控制台。也许您的控制台配置不正确,无法显示某些字符。通过调试并将结果存储到中间变量中来确保。
此外,您作为示例提供的网站也完全混乱。网络服务器发送Content-Type: text/html; charset=iso-8859-1
HTTP 标头和生成的 HTML 中您会看到<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这当然是完全不连贯的。您不能期望 HTTP 客户端在面对非标准站点时能够正确运行,您得到的是意外的行为。
尝试在一些遵守最低网络标准的网站上进行测试。
Remark: 网络客户端 http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx实施I一次性 http://msdn.microsoft.com/en-us/library/system.idisposable.aspx,所以请确保将其包裹在using http://msdn.microsoft.com/en-us/library/yh598w02.aspx陈述。
UPDATE:
要使其适用于此特定站点,您可以尝试手动下载响应并指定correct编码:
// 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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)