如何从WebClient Response解析编码?

mar*_*zzz 5 .net c# parsing

我得到一个页面的内容类型WebClient.ResponseHeaders.如果我打印它:

client.ResponseHeaders["Content-Type"]
Run Code Online (Sandbox Code Playgroud)

我得到的东西像:

Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

所以我想得到它(如果有的话).否则设置默认值.这是我的实际代码:

var KeysParsed = HttpUtility.ParseQueryString(client.ResponseHeaders["Content-Type"].Replace(" ", "").Replace(";", "&"));
var charset = ((KeysParsed["charset"] != null) ? KeysParsed["charset"] : "UTF-8");
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但它看起来不那么灵活.你能提出什么建议?

Gen*_*ene 13

为什么重新发明轮子?请参见System.Net.Mime.ContentType:

var contentType = new ContentType(client.ResponseHeaders["Content-Type"]);
Console.WriteLine("{0} ({1})", contentType.MediaType, contentType.CharSet);

var charset = (contentType.CharSet ?? "UTF-8");
Run Code Online (Sandbox Code Playgroud)

  • 还有更强大的“System.Net.Http.Headers.MediaTypeHeaderValue”(.NET 4.5)和“Microsoft.Microsoft.Net.Http.Headers.MediaTypeHeaderValue”(ASP.NET Core 和 .NET Core)类型,它们都提供“解析`方法。 (2认同)