我在正确的字符集中检索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说明设置标头的请求标头字符集无济于事,它是响应的一个需要设置的响应。 (此外,尝试添加时会出错 标题"内容类型"请求标题。)
但是我仍然无法在适当的字符集(utf-8)中检索内容。
我错过了什么?
我一直在用希伯来网站做类似的事情,比较来自这个网站的Fiddler的回复标题以及我没有这个问题的其他人 - 我看到的唯一区别就是这个内容 - 在响应中键入标题。
答案 0 :(得分:1)
问题可能是由于这个错误:
解决方法是将响应作为字节数组获取并自行编码:
var options;
options.appendElement = $document.find('aside-box').eq(0);
return $uibModal.open(options);
作为旁注,您是否有理由使用var bytes = await content.ReadAsByteArrayAsync();
var s = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
代替.Result
?您正在不必要地阻止当前线程并为自己设置死锁。