[C#] 纯文本查看 复制代码
# 自动识别HTML编码
## 来自你的消息:
C#语言中使用HttpWebResponse请求返回的html数据怎么自动识别编码
## 来自 ChatGPT 的消息:
在C#中使用HttpWebResponse请求返回的HTML数据时,可以通过以下步骤自动识别编码:
1. 获取HttpWebResponse对象的ContentType属性,该属性包含了返回的数据类型和编码信息;
2. 从ContentType属性中分离出编码信息;
3. 将编码信息转换成对应的编码格式;
4. 使用得到的编码格式读取返回的数据。
以下是实现自动识别编码的代码示例:
```csharp
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string charset = null;
string contentType = response.ContentType;
if (!string.IsNullOrEmpty(contentType))
{
int index = contentType.IndexOf("charset=");
if (index != -1)
{
charset = contentType.Substring(index + 8);
}
}
Encoding encoding = null;
if (!string.IsNullOrEmpty(charset))
{
try
{
encoding = Encoding.GetEncoding(charset);
}
catch (ArgumentException)
{
encoding = null;
}
}
if (encoding == null)
{
encoding = Encoding.UTF8;
}
StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
string html = reader.ReadToEnd();
Console.WriteLine(html);
response.Close();
```