【发布时间】:2013-10-14 15:03:07
【问题描述】:
我即将下载一个以 UTF-8 编码的page。 所以这是我的代码:
using (WebClient client = new WebClient())
{
client.Headers.Add("user-agent", Request.UserAgent);
htmlPage = client.DownloadString(HttpUtility.UrlDecode(resoruce_url));
var KeysParsed = HttpUtility.ParseQueryString(client.ResponseHeaders["Content-Type"].Replace(" ", "").Replace(";", "&"));
var charset = ((KeysParsed["charset"] != null) ? KeysParsed["charset"] : "UTF-8");
Response.Write(client.ResponseHeaders);
byte[] bytePage = Encoding.GetEncoding(charset).GetBytes(htmlPage);
using (var reader = new StreamReader(new MemoryStream(bytePage), Encoding.GetEncoding(charset)))
{
htmlPage = reader.ReadToEnd();
Response.Write(htmlPage);
}
}
所以,它为编码设置了UTF-8。但是下载的标题,例如,在我的屏幕上显示为:
Sexy cover: 60 e più di “quei dischi” vietati ai minori
而不是:
Sexy cover: 60 e più di “quei dischi” vietati ai minori
出了点问题,但我不知道在哪里。有什么想法吗?
【问题讨论】:
-
如果您使用网络浏览器会显示什么?
-
使用网络浏览器时,标题上的正确文本是
Sexy cover: 60 e più di “quei dischi” vietati ai minori。试试自己,用 Firefox 打开它:) -
“性感封面”。先生,我在上班。试试 UTF-16 和 ASCII 西欧,看看它是怎么说的。你确定你应该默认为 UTF-8 吗?
-
另外,是否有任何标题可以告诉您编码是什么?
-
var KeysParsed = HttpUtility.ParseQueryString(client.ResponseHeaders["Content-Type"].Replace(" ", "").Replace(";", "&"));这段代码应该做什么?