public static async System.Threading.Tasks.Task <string> GetHtml(this HttpClient httpClient, string url) { var content = string.Empty; var data = await httpClient.GetByteArrayAsync(url); var ide = new IdentifyEncoding(); var encodingName = ide.GetEncodingString(IdentifyEncoding.ToSByteArray(data)); var encoding = System.Text.Encoding.GetEncoding(encodingName); content = encoding.GetString(data); return(content); }
/// <summary> /// 从指定位置开始读取数据,直到接收到停止消息。 /// </summary> public void Read(int offset) { //下面这句话保证,每次都从OneTimeRead的倍数位置读取数据 offset = offset / OneTimeRead * OneTimeRead; byte[] bytes = new byte[OneTimeRead]; TotalLen = _cacheBuffer.Read(offset, bytes); StartedOffset = offset; string encodingName = identifyEncoding.GetEncodingName(IdentifyEncoding.ToSByteArray(bytes)); string text = Encoding.GetEncoding(encodingName).GetString(bytes, 0, TotalLen); Text = text; }
public string GetString(string encodingName, byte[] bytes, int count) { if (string.IsNullOrWhiteSpace(encodingName)) { try { string autoCheckName = _identifyEncoding.GetEncodingName(IdentifyEncoding.ToSByteArray(bytes)); string text = Encoding.GetEncoding(autoCheckName).GetString(bytes, 0, count); return(text); } catch (Exception) { encodingName = "Hex"; } } if (encodingName == "Hex") { string text = BytesToHexString(bytes, count); return(text); } return(string.Empty); }