在.NET中,当我从服务器获得响应流时,我应该使用哪种类型的编码类型?

时间:2010-12-22 17:40:50

标签: .net vb.net web-applications stream

在以下示例中,我从服务器获得响应; 但是我需要设置ASCII或UTF8编码类型吗?

Dim objURI As Uri = New Uri(URL)
Dim wReq As WebRequest = WebRequest.Create(objURI)
Dim wResp As WebResponse = wReq.GetResponse()
Dim respStream As Stream = wResp.GetResponseStream()
Dim reader As StreamReader = New StreamReader(respStream, Encoding.ASCII)
Dim respHTML As String = reader.ReadToEnd()
wResp.Close()

2 个答案:

答案 0 :(得分:1)

这实际上取决于Web服务器发送响应的编码。

docs州:

  

字符编码由。设置   编码参数和缓冲区   size设置为1024字节。该   StreamReader对象尝试检测   通过查看第一个编码   流的三个字节。它   自动识别UTF-8,   little-endian Unicode和big-endian   如果文件以。开头的Unicode文本   适当的字节顺序标记。

在我看来,只要让运行时识别编码就应该是安全的。

答案 1 :(得分:1)

这取决于您对服务器的期望。对于HTML(这似乎是您的期望),ASCII在99%的时间用于英语页面,并且应该允许您解码所有HTML元素,无论如何。但是,您应该做的第一件事就是阅读文档head元素中的任何“meta”标记;这些将指定正文中文本的编码。通常,如果它不是ASCII,则它是UTF-8,它向后兼容ASCII(但会显示一些奇怪的字符,用于2字节和4字节字符代码)。