在使用C# HttpClient請求接口時,有時候會遇到返回的Json數據亂碼的情況。這種情況通常是由于接口返回的數據編碼和HttpClient默認編碼不一致造成的。
解決這個問題有兩種方法:
// 方法一:指定HttpClient的編碼格式為UTF8
var httpClient = new HttpClient { DefaultRequestHeaders = { AcceptEncoding = { new StringWithQualityHeaderValue("gzip") } }, Timeout = new TimeSpan(0, 0, 10), };
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.DefaultRequestHeaders.AcceptCharset.Add(new StringWithQualityHeaderValue("UTF-8"));
HttpResponseMessage response = await httpClient.GetAsync("http://api.com");
// 方法二:手動將返回的Json數據轉換為UTF8編碼
string result = await response.Content.ReadAsStringAsync();
byte[] bytes = Encoding.Default.GetBytes(result);
result = Encoding.UTF8.GetString(bytes);
通過以上兩種方式,我們可以很方便地解決C# HttpClient請求接口返回Json亂碼的問題。