【发布时间】:2016-02-18 10:48:24
【问题描述】:
我在以正确的字符集检索 http get 请求的内容时遇到问题。
我尝试了几段代码,例如:
HttpClient h = new HttpClient();
//Content-Type: text/html; charset=UTF-8
//p.s. contents are in hebrew.
var resp = h.GetAsync("http://www.wnf.co.il");
var content = resp.Result.Content;
//remove the default Content-Type header
content.Headers.Remove("Content-Type");
content.Headers.Add("Content-Type", "text/html; charset=utf-8");
var res = content.ReadAsStringAsync();
var s = res.Result;
Console.WriteLine(s);
这仍然没有帮助,我仍然得到错误编码的内容。
This post 阐明设置标头的请求标头字符集无济于事,需要设置的是响应。 (此外,您在尝试添加时会出错 标头“Content-Type”到请求标头。)
但我仍然无法以正确的字符集 (utf-8) 检索内容。
我错过了什么?
一段时间以来,我一直在用希伯来语网站做类似的事情,比较这个网站的 Fiddler 中的响应标头和我没有这个问题的其他网站 - 我看到的唯一区别确实是这个 Content-Type 标头回应。
【问题讨论】:
-
那么内容的实际编码是什么,Content-Type 标头告诉你什么?当这些不同时,大多数 HTTP 客户端返回 mojibake,您可能必须将响应正文作为字节数组获取并自己从字节中解码字符串。
-
fiddler 对此站点的响应 ContentType(显示一个好看的响应)是 UTF-8,媒体类型为“text/html”,就像我试图设置的那样。
标签: http-headers http-get dotnet-httpclient