【问题标题】:In .NET when I get a response stream from the server what type of encoding type should I use?在 .NET 中,当我从服务器获得响应流时,我应该使用哪种类型的编码类型?
【发布时间】:2010-12-22 17:40:49
【问题描述】:
在以下示例中,我从服务器获得响应;
但是我需要设置 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()
【问题讨论】:
标签:
.net
vb.net
web-applications
stream
【解决方案1】:
这实际上取决于 Web 服务器发送响应的编码。
docs 状态:
字符编码由
编码参数和缓冲区
大小设置为 1024 字节。这
StreamReader 对象尝试检测
通过查看第一个编码
流的三个字节。它
自动识别 UTF-8,
little-endian Unicode 和 big-endian
如果文件以 Unicode 文本开头
适当的字节顺序标记。
在我看来,让运行时识别编码应该是安全的。
【解决方案2】:
这取决于您对服务器的期望。对于 HTML(这似乎是您的期望),ASCII 在 99% 的时间都适用于英语页面,并且应该允许您解码所有 HTML 元素。但是,您应该做的第一件事是读取文档头部元素中的任何“元”标签;这些将指定正文中文本的编码。通常,如果不是 ASCII,它是 UTF-8,它向后兼容 ASCII(但对于 2 字节和 4 字节字符代码会显示一些奇怪的字符)。