【问题标题】: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 字节字符代码会显示一些奇怪的字符)。

      【讨论】:

        猜你喜欢
        • 2017-07-22
        • 2017-06-10
        • 2021-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-18
        • 1970-01-01
        • 2023-01-18
        相关资源
        最近更新 更多