使用HttpClient进行编码

时间:2012-06-05 21:08:17

标签: windows-8 .net-4.5

我在Windows 8中使用HttpClient类。对于Windows Phone,我使用 WebClient类与编码结合使用以获得正确的编码。

WebClient xml = new WebClient();
xml.Encoding = Encoding.GetEncoding("ISO-8859-1");

在Windows 8中,它看起来像这样:

HttpClient xml = new HttpClient();
HttpResponseMessage response = await xml.GetAsync(uri);                    
responsetext = await response.Content.ReadAsStringAsync();

如何添加编码以支持德语(变音符号)?

2 个答案:

答案 0 :(得分:2)

我现在没有时间进行测试,但您是否尝试过使用HttpContent.ReadAsByteArrayAsync方法(而不是ReadAsStringAsync)并将生成的byte []分别编码到ISO-8859-1中?

答案 1 :(得分:1)

将ReadAsStringAsync更改为ReadAsBufferAsync并使用所需的编码解析结果

var buffer = await response.Content.ReadAsBufferAsync();
byte [] rawBytes = new byte[buffer.Length];
using (var reader = DataReader.FromBuffer(buffer))
{
    reader.ReadBytes(rawBytes);
}

var res = Encoding.UTF8.GetString(rawBytes, 0, rawBytes.Length);